Es difícil clarificar el concepto de "patrón de diseño". Los patrones de diseño son básicamente construcciones de código que solucionan problemas comunes en el trabajo con y entre objetos. Para ello, utilizan generalmente el tipo Interface de los lenguajes de programación. La ventaja es que son aplicables a cualquier lenguaje que soporte las características de dicho tipo.
Los patrones de diseño resuelven aspectos como, entre otros:
- Forzar a que una clase tenga una única instancia global para la aplicación.
- Crear objetos de una clase u otra según el contexto.
- Clonar objetos.
- Adaptar los mensajes de salida de un objeto con los de entrada de otro, sin poder modificar el código de uno de ellos o ambos.
- Comunicar sucesos entre objetos sin conectarlos directamente.
- Iterar por todos los objetos de una clase.
- Permitir deshacer y rehacer acciones de un objeto.
- Delegar responsabilidades a otros objetos.
- Componer objetos en grupos.
- Sustituir dinámicamente el comportamiento de un método invocado.
- Cambiar la interfaz externa de un objeto no modificable.
La experiencia en el uso de los patrones de diseño es la que nos dice en qué contexto deben ser utilizados: cuanto antes se conozcan y se dominen, mejor.
Un excelente y bien explicado libro de patrones de diseño puede encontrarse en la bibliografía ([FRE04]).
[FRE04] E. Freeman, E. Freeman, K. Sierra, B. Bates. Head First Design Pattern. O'Reilly Media, 2004.