Los patrones de diseño nos ayudan a crear aplicaciones robustas resolviendo los problemas comunes utilizando soluciones conocidas y probadas.
Identificamos algo como un patrón cuando resolvemos un problema que ocurre frecuentemente utilizando un esquema común de solución. Este esquema es posible utilizarlo todas las veces que ocurre el mismo problema, convirtiendo este esquema en un diseño reutilizable.
Esto ayuda a ahorrar tiempo evitando crear soluciones particulares para algo que ya ha sido resuelto antes.
Un patrón de diseño es una manera conocida de resolver un problema recurrente.
Este diseño se convierte así en un template que ya ha sido evaluado innumerables veces por lo que podemos confiar en que han sido validados.
Sin embargo, debemos recordar que estos templates son propuestas para ser utilizadas en nuestros códigos y en algunos casos quizás requieran cambios para adaptarlos, pero la base del template ya nos resume mucho el trabajo.
Un buen diseño permite un mantenimiento sin mucha dificultad en razón de que es conocido y se encuentra documentado de manera extensiva. Facilita cualquier discusión y análisis que surja sobre el código existente lo que mejora además la lectura para nuevos desarrolladores sobre el código.
Como se clasifican los patrones de diseño
Hay varios tipos de patrones que pueden resultarnos de gran utilidad. Creacionales, estructurales y de comportamiento. Estos son solo algunos que habitualmente uso y que creo no pueden faltar en nuestra rutina diaria de desarrollo.
Los creacionales que resuelven problemas en la creación de instancias.
Los estructurales que se resuelven problemas referidos a la estructura de las clases.
- Patrón de Diseño Decorator
- Patrón de Diseño Facade
- Patrón de Diseño Adapter
- Patrón de Diseño Composite
De comportamiento que resuelven problemas relacionados con la forma en que debe comportarse un objeto.
En resumen:
- Ayuda a unificar el código desarrollado entre distintos programadores.
- Ayuda a ganar tiempo en aplicando soluciones conocidas a problemas comunes.
- Ayuda a crear un código legible y mantenible en el futuro.