Un patrón de diseño es una manera de resolver un problema dentro de un contexto. En otras palabras, los patrones son plantillas para soluciones a problemas comunes en el desarrollo de software que se pueden usar en diferentes contextos.
Los patrones de diseño dan soluciones fáciles a problemas complejos sin importar el lenguaje que estemos usando y deben cumplir al menos con los siguientes objetivos:
- Estandarizar el lenguaje entre programadores
- Evitar perder tiempo en soluciones a problemas ya resueltos o conocidos
- Crear código reusable (excelente ventaja)
- Tipos de patrones de diseño
Los patrones de diseño se clasifican en tres tipos diferentes dependiendo del tipo de problema que resuelven. Estos pueden ser:
Creacionales
Su objetivo es resolver los problemas de creación de instancia. Estos ayudan a delegar responsabilidad de creación de objetos en situaciones necesarias. Sus pilares fundamentales son encapsular el conocimiento de las clases y Ocultar cómo se crean y se instancian. Se subdividen a su vez así:
- Builder
- Factory
- Prototype
- Singleton
Estructurales
Se ocupa de resolver problemas sobre la estructura de las clases, es decir, se enfocan en cómo las clases y objetos se componen para formar estructuras mayores.
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- FlyWeight
- Proxy
De comportamiento
Nos ayuda a resolver problemas relacionados con el comportamiento de la aplicación. Ofrece soluciones respecto a la interacción y responsabilidad entre objetos y clases.
- Chain responsability
- Command
- Interpreter
- Iterator
- Memento
- Mediator
- Null Object
- Observer
- State
- Strategy
- Template method
- Visitor