No busques tendencias
Cualquier solución de programación estándar para un determinado problema puede considerarse un patrón de diseño, sin importar qué tan populares sean, o si otros programadores las 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 cuando es al revés.
Recuerde que la convención de diseño de patrones de diseño tiene 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 en los que encontrarás patrones de diseño aplicados. Un ejemplo que me viene a la mente es Joomla: encontrarás singletons , observadores . Las bibliotecas GUI tendrán el patrón de decoración , patrón de comando implementado, y tal vez incluso flyweight .
Hay otros patrones como los patrones de datos, por ejemplo, el Proyecto Doctrine solo ha usado, el patrón de registro activo ( 1.x), patrón del administrador de entidades (2.x), unidad de trabajo , repositorio , objeto de consulta , asignación de metadatos , mapeo de datos , y otros más generales como patrón de estrategia , y patrón decorador .
Hay tantas soluciones interesantes para elegir. Consulte Patrones de arquitectura empresarial de Martin Fowler , también hay patrones de modelo de datos .
Solo aprende para cuando llegue el momento
Apréndalos, conózcalos, obsesione con ellos y cuando llegue el momento sabrá cómo resolver el problema de programación x, ya será un mejor programador para ese momento.
Conviértete en un arquitecto
Yo diría que ser capaz de pensar en términos de patrones para resolver problemas, de manera efectiva te convierte en un arquitecto de software . Incluso si no quiere ser un arquitecto de software per se, sus soluciones tendrán más calidad técnica, serán más limpios y tendrán una mejor escalabilidad, en términos de diseño, de forma predeterminada.