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 el CLOS admite el envío múltiple, el mismo problema que el patrón de visitante está tratando de resolver.
Además, .NET Framework tiene un mecanismo de eventos integrado para la publicación de eventos en múltiples oyentes, lo que hace que el patrón Observer 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 las aplicaciones de una sola página, estos patrones pueden volver a ser relevantes en el lado del cliente.
Pero los patrones de diseño y los libros como "Patrones de diseño" o "Patrones de arquitectura de aplicaciones empresariales" son de gran valor cuando usted es un programador novato y se enfrenta a un nuevo tipo de problema por primera vez; Como era la primera vez que me pidieron que implementara la funcionalidad de Deshacer. Si no hubiera sido por el libro "Patrones de diseño", mi implementación probablemente hubiera 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 horriblemente 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 principiante, son valiosos, siempre y cuando recuerdes que son los medios para resolver un problema, y no una búsqueda para utilizar la mayor cantidad posible.
* la cita puede no ser 100% precisa ya que se toma de la memoria
** en mi experiencia, es muy común que las empresas elijan los mecanismos de entrega web para las aplicaciones internas de línea de negocio.
*** después de aprender la programación funcional y las estructuras de datos funcionales, entonces esa podría ser la forma en que lo resolvería hoy.