Я считаю, что банды четырех сами классифицируют шаблоны проектирования как
общее решение часто встречающейся проблемы *
Так что да, шаблоны актуальны, когда возникает проблема того же типа. И это приводит нас к проблеме с термином «Шаблон проектирования». Шаблон - это нечто узнаваемое, которое встречается неоднократно. Таким образом, на самом деле не существует шаблона дизайна, есть шаблон проблемы.
Некоторые языки программирования могут иметь собственные решения некоторых из этих проблем. В самой книге «Шаблоны проектирования» упоминается, что шаблон посетителя не имеет особой ценности, если вы используете CLOS, поскольку многопотоковая поддержка изначально поддерживается CLOS, и именно эту проблему пытается решить шаблон Visitor.
Кроме того, .NET Framework имеет встроенный механизм событий для публикации событий для нескольких слушателей, что делает шаблон Observer менее актуальным в этом контексте.
Переход от настольных приложений к веб-приложениям ** также меняет тип проблем программирования, которые мы должны решить. Многие из шаблонов в книге «Шаблоны проектирования» актуальны для настольных приложений, но не так много для веб-приложений. Конечно, в одностраничных приложениях эти шаблоны могут снова оказаться актуальными на стороне клиента.
Но шаблоны проектирования и книги, такие как «Шаблоны проектирования» или «Шаблоны архитектуры корпоративных приложений», имеют огромное значение, когда вы начинающий программист и впервые столкнулись с проблемой нового типа; как меня впервые попросили реализовать функцию отмены. Если бы не книга «Шаблоны проектирования», моя реализация, вероятно, была бы чем-то вроде хранения снимка данных после каждой операции изменения состояния *** - очень подверженный ошибкам и ужасно неэффективный подход.
Так что да, некоторые паттерны со временем становятся менее актуальными, и когда вы становитесь опытным программистом, вы меньше думаете о них. Но для новичка они ценны, если вы помните, что они являются средством решения проблемы, а не стремлением использовать как можно больше.
* цитата не может быть на 100% точной, так как она взята из памяти
** По моему опыту, предприятиям очень часто приходится выбирать механизмы веб-доставки для внутренних бизнес-приложений.
*** после изучения функционального программирования и функциональных структур данных, я мог бы решить эту проблему сегодня.