Creo que la pandilla de cuatro clasifica los patrones de diseño como
Una solución común a un problema común *
Entonces sí, los patrones son relevantes cuando ocurre el mismo tipo de problema. Y esto nos lleva a un problema con el término "Patrón de diseño". Un patrón es algo reconocible que ocurre repetidamente. Entonces, en realidad no hay un patrón de diseños, hay un patrón de problemas.
Algunos lenguajes de programación pueden tener soluciones nativas para algunos de esos problemas. El libro "Patrones de diseño" en sí mismo menciona que el patrón de visitante tiene poco valor si está utilizando CLOS, ya que CLOS admite de forma nativa el envío múltiple, el problema que el patrón de visitante está tratando de resolver.
Además, el marco .NET tiene un mecanismo de eventos incorporado para publicar eventos a múltiples oyentes, lo que hace que el patrón de Observador sea menos relevante en este contexto.
El cambio de aplicaciones de escritorio a aplicaciones web ** también cambia el tipo de problemas de programación que tenemos que resolver. Muchos de los patrones en el libro "Patrones de diseño" son relevantes para aplicaciones de escritorio, pero no tanto para aplicaciones web. Por supuesto, con aplicaciones de una sola página, estos patrones pueden ser relevantes nuevamente en el lado del cliente.
Pero los patrones de diseño y libros como "Patrones de diseño" o "Patrones de arquitectura de aplicaciones empresariales" son de gran valor cuando eres un programador novato y te enfrentas a un nuevo tipo de problema por primera vez; Como era la primera vez que me pidieron que implementara la funcionalidad Deshacer. Si no hubiera sido por el libro "Patrones de diseño", mi implementación probablemente habría sido algo así como almacenar una instantánea de los datos después de cada operación de cambio de estado ***, un enfoque muy propenso a errores y terriblemente ineficiente.
Entonces, sí, algunos de los patrones se vuelven menos relevantes con el tiempo, y a medida que te conviertes en un programador experimentado, piensas menos en ellos. Pero para un novato, son valiosos, siempre y cuando recuerde que son los medios para resolver un problema, y no una búsqueda para usar la mayor cantidad posible.
* la cotización puede no ser 100% precisa ya que se toma de la memoria
** en mi experiencia, se está volviendo muy común que las empresas elijan mecanismos de entrega web para aplicaciones de línea de negocios internas.
*** después de aprender programación funcional y estructuras de datos funcionales, entonces esa podría ser la forma en que lo resolvería hoy.