No busques tendencias
Cualquier solución de programación estándar para un determinado problema puede considerarse un patrón de diseño, no importa cuán populares sean o si otros programadores los usan o no.
Es posible que ya esté utilizando un patrón de diseño que aún no se ha inventado / especificado.
No intentes usarlos, intenta pensar en sus términos
El problema con los patrones de diseño es que a veces los programadores quieren encajar sus problemas en ellos cuando es al revés.
Recuerde que las convenciones de diseño de patrones de diseño tienen un problema típico que resolver, incluso puede combinar patrones de diseño para abordar otros problemas más grandes. Esto es algo típico en las arquitecturas orientadas a servicios, solo vea algunos de los patrones SOA que existen .
Búscalos en la naturaleza
Hay muchos proyectos de código abierto donde encontrará patrones de diseño aplicados. Un ejemplo que me viene a la mente es Joomla: encontrará singletons , observadores . Las bibliotecas GUI tendrán el patrón de decorador , el patrón de comando implementado y tal vez incluso el peso mosca .
Hay otros patrones, como los patrones de datos, por ejemplo, el Proyecto Doctrine solo ha utilizado, el patrón de registro activo (1.x), el patrón de administrador de entidades (2.x), la unidad de trabajo , el repositorio , el objeto de consulta , la asignación de metadatos , los datos mapeo y otros más generales como el patrón de estrategia y el patrón de decorador .
Hay tantas soluciones interesantes para elegir. Vea Patrones de arquitectura empresarial de Martin Fowler , también hay patrones de modelo de datos .
Solo aprende para cuando llegue el momento
Aprenderlos, conocerlos, obsesionarse con ellos y cuando llegue el momento sabrá cómo resolver el problema de programación x, ya será un mejor programador.
Convertirse en arquitecto
Yo diría que ser capaz de pensar en términos de patrones para resolver problemas, efectivamente te convierte en un arquitecto de software . Incluso si no desea ser un arquitecto de software per se, sus soluciones tendrán más calidad técnica, serán más limpias y tendrán una mejor escalabilidad, en términos de diseño, de forma predeterminada.