Son los patrones que indican como se estructuran los proyectos
ej: Layers, ModelViewController(MVC),EventDrivenArchitecture(EDA)
Son los patrones que indican como se implementan las clases o modulos
ej: Factory Method, Facade, Strategy, Observer, Adapter, Singleton.
Son patrones que solucionan problemas de creación de objetos. Permiten encapsular y abstraer dicha creación.
- Factory Method
Patron de diseño de creación de clase
: Crea una instancia de varias clases derivadas - Abstract Factory
Patron de diseño de creación de objeto
: Crea una instancia de varias familias de clases - Builder
Patron de diseño de creación de objeto
: Separa la construccion de un objeto de su representacion - Singleton
Patron de diseño de creación de objeto
: Una clase de la cual solo una instancia puede existir - Prototype
Patron de diseño de creación de objeto
: Una instancia que puede ser clonada completamente para su uso
- Single responsibility: La clase solo debe responder para lo que fue creada
- Open Closed: Abierta para delegar caracteristicas pero cerrada en cuanto al comportamiento de la solución.
- Liskov Substitution: Poder sustituir una clase heredada por la clase base (Perro -> Animal)
- Interface Segregation: Poder Hacer interfaces detalladas para requerimientos especificos de cliente (Facade)
- Dependency Inversion: La dependencia debe ser de las clases base más no de las heredadas
Son patrones que solucionan problemas de composición (agregación) de clases y objetos
- Adapter: Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.
- Facade: Provee de una interfaz unificada simple para acceder a una interfaz o grupo de interfaces de un subsistema.
- Decorator: Añade comportamientos o responsabilidades a los objetos dinamicamente.
Son patrones que guian la interacción entre los objetos
- Chain of responsibility: Encadena una petición a varios objetos para que cada uno interactue especificamente.
- Command: Encapsula una petición de comandos en un solo objeto.
- Interpreter: Una manera de incluir elementos del lenguaje en un programa.
- Iterator: Acceso secuencial a los elementos de una colección.
- Mediator: Define una comunicación simplificada entre clases (APIs).
- Memento: Captura y restaura el estado interno de un objeto.
- Observer: Una forma de notificar cambios a varias clases (Publish & Subscribe).
- State: Altera el comportamiento de un objeto cuando cambia de estado (Wizards).
- Strategy: Encapsula un algoritmo dentro de una clase.
- Template Method: Difiere los pasos exactos de un algoritmo a una subclase.
- Visitor: Define una nueva operación a una clase sin cambiarla .
Son las ventajas o carácterisiticas del lenguaje especifico aplicado
ej: Convenciones del lenguaje (Interfaces, Abstract, Herencia), Uso de memoria.