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:

Intermedio:

Avanzado:

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