Guia de Patrones de diseño, Entrando en contexto!
¿Que son los patrones de diseño? 😬
En Ingeniería de Software, un patrón de diseño es una solución común a un problema de diseño de software. El reusar dichos patrones de diseño ayuda a prevenir errores y mejora la lectura del código y generar una arquitectura familiar por medio de patrones. Los patrones de diseño típicamente son separados tres categorías, esto es llamado Gama Categorization por Erich Gamma, uno de los autores del libro Design Patterns: Elements of Reusable Object-Oriented Software
Este libro separa los patrones en 3 tipos:
Patrones Creacionales Los patrones creaciones son los relacionados con la construcción de los objetos. Pueden ser divididos en patrones de creación de clases y patrones creacionales de objetos. De los patrones más populares en esta familia son: Abstract Factory, Builder, Factory Method, etc…
Explicit Creation (Constructor)
Inplicit (Dependency Inyection, Reflection, etc)
Patrones Estructurales Los patrones estructurales son los relacionados con la composición de objetos y clases. Los patrones de creación de clases estructurales usan herencia para componer sus interfaces y los patrones de objetos estructurales definen la forma de componer objetos para obtener nuevas funcionalidades. De los patrones más populares de esta familia son: Decorator, Facade, Adapter, Bridge, etc …
Patrones de comportamiento: Los patrones de comportamiento son los relacionados con la comunicación de objetos entre clases. La importancia de esta familia de patrones se evidencia a la hora de definir una comunicación entre todos los objetos. Su variedad es extensa, de los patrones más populares de esta familia son: Observer, Chain of Responsibility, State, etc…
Patrones incluidos en este blog.
Básico:
- Patrón de diseño creacional Factory Method
- Patrón de diseño creacional Builder
- Patrón de diseño creacional Abstract Factory
Intermedio:
- Patrón de diseño estructural Composition
- Patrón de diseño estructural Decorator
- Patrón de diseño estructural Façade
Avanzado:
- Patrón de diseño de comportamiento Observer
- Patrón de diseño de comportamiento State
- Patrón de diseño de comportamiento Strategy
Useful Links
Gamma, E., Richard Helm, Ralph Johnson, y John Vlissides (Eds.). (1995). Design patterns: Elements of reusable object-oriented software. Addison-Wesley. https://ramirobedoya.me/2018/09/29/design-patterns-get-started/1994_Design_Patterns_Elements_of_Reusable_Object_Oriented_Software.pdf
Osmani, A. (2012). Learning JavaScript design patterns (1st ed). O’Reilly Media.
JavaScript. (s/f). Documentación web de MDN. Recuperado el 12 de mayo de 2020, de https://developer.mozilla.org/es/docs/Web/JavaScript
Martin, R. C. (2003). Agile software development: Principles, patterns, and practices. Prentice Hall.
Refactoring and Design Patterns. (s/f). Recuperado el 29 de abril de 2020, de https://refactoring.guru/
Shvets, A. (2018). Dive Into Design Patterns. refactoring.guru. https://refactoring.guru/design-patterns/book