Facilitar la estructura y mantenimiento de los sistemas a construir
-
Documentarnos en todo lo Referente al Problema (Enfocados en la solución)
-
Descomponer el problema en piezas (modulos, paquetes)
-
Determinar responsabilidades de los modulos
-
Construir Software con interfaz clara de comunicacion entre modulos
[1977, Libro(A Pattern Language) Arquitectura] -> "Cada patron describe un problema que ocurre una y otra vez en nuestro medio ambiente y, a continuación describe el núcleo de la solución a ese problema, de tal manera que se puede utilizar esa solución un millón de veces, sin tener que hacerlo de la misma manera dos veces" (ejemplo de puertas y ventanas)
-
Describe una solución reutilizable a un problema común en un contexto dado.
-
Se enfoca en la solución y no en el problema
-
Identifica responsabilidades e interacciones entre los participantes
"Un patron es principalmente una forma de masticar consejos sobre un tema" - Martin Fowler
-
No es un paradigma de programación
-
No es un silver bullet (bala de plata -> usar cualquier patron para cualquier solución)
-
No es una solución inefectiva y riesgosa
-
No resuelve un problema especifico
-
No depende del lenguaje de implementación
-
Entendimiento comun del diseño del software (vocabulario [MVC, Controller ... ]
-
Alternativas de diseño flexibles y reutilizables
-
Construir arquitecturas de software complejas (Escalables)
-
Mejor mantenimiento de la solución de software
-
Favorece la vida
-
Incrementa tu experiencia profesional