https://github.com/JakubVojvoda/design-patterns-cpp
Los patrones de diseño de software son soluciones reutilizables generales a problemas que ocurren una y otra vez en un entorno de diseño orientado a objetos. No es un diseño terminado que pueda transformarse directamente en código fuente, sino que es una plantilla de cómo resolver el problema. Podemos clasificarlos por propósito en creacionales (resumen el proceso de creación de instancias), estructurales (cómo se componen las clases y los objetos para formar estructuras más grandes) y patrones de comportamiento (la asignación de responsabilidades entre objetos).
- Abstract Factory, objetos de familias de productos
- Builder, cómo se crea un objeto compuesto
- Factory Method, subclase del objeto que se ha instanciado
- Prototype, clase del objeto que se ha instanciado
- Singleton, la única instancia de una clase
- Adapter, interface a un objeto
- Bridge, implementación de un objeto
- Composite, estructura y composición de un objeto
- Decorator, responsabilidades de un objeto sin subclases
- Facade, interfaz a un subsistema más complejo
- Flyweight, almacena el coste de los objetos
- Proxy, cómo se accede a un objeto (su ubicación)
- Chain of Responsibility, objeto que puede cumplir una petición
- Command, cuándo y cómo se cumple una solicitud
- Interpreter, gramática e interpretación de una lengua
- Mediator, cómo y qué objetos interactúan entre sí
- Memento, qué información privada se almacena fuera de un objeto y cuándo
- Observer, cómo los objetos dependientes se mantienen actualizados
- State, estado de un objeto
- Strategy, un algoritmo
- Template Method, pasos de un algoritmo
- Visitor, operaciones que se pueden aplicar a los objetos sin cambiar sus clases