Patrones
Soluciones a problemas recurrentes de diseño: cómo funcionan, cuándo aplicarlas y cuándo conviene una alternativa más simple.
28 guías
- ¿Qué son los patrones de diseño?
Qué hace que una solución sea un patrón de diseño, cómo se organiza el catálogo clásico y por qué cada patrón necesita adaptarse al problema.
Patrones creacionales
- Patrones creacionales
La forma de crear objetos también condiciona el diseño. Cómo separar su construcción del código que los usa y elegir el patrón adecuado.
- Factory Method
Cómo delegar en las subclases la elección del objeto que se crea, sin acoplar el código que lo usa a una clase concreta.
- Abstract Factory
Cómo crear familias de objetos compatibles sin depender de sus clases concretas y mantener esa compatibilidad al cambiar de implementación.
- Builder
Cómo construir objetos paso a paso cuando un constructor con muchos parámetros se vuelve difícil de usar y mantener.
- Prototype
Crear objetos a partir de otros existentes puede simplificar su construcción. Cómo funciona la clonación y qué cuidados requiere.
- Singleton
Cómo garantizar una única instancia y qué consecuencias tiene ofrecer acceso global a ella para las dependencias y los tests.
Patrones estructurales
- Patrones estructurales
Cómo combinar clases y objetos para adaptar interfaces, extender comportamientos y simplificar el uso de componentes complejos.
- Adapter
Cómo integrar componentes con interfaces incompatibles mediante un adaptador, sin modificar sus implementaciones.
- Bridge
Cómo separar una abstracción de su implementación para que ambas puedan evolucionar sin crear una subclase por cada combinación.
- Composite
Cómo trabajar con objetos individuales y grupos de objetos a través de una misma interfaz, simplificando el manejo de estructuras jerárquicas.
- Decorator
Cómo agregar comportamiento a un objeto mediante composición y combinar extensiones sin crear una subclase para cada variante.
- Facade
Cómo ofrecer una interfaz simple para un subsistema complejo y evitar que sus clientes tengan que coordinar cada componente.
- Flyweight
Cuando muchos objetos comparten información, almacenarla una sola vez puede reducir el uso de memoria. Cómo separar el estado compartido del que depende de cada contexto.
- Proxy
Cómo controlar el acceso a un objeto mediante un intermediario con la misma interfaz y en qué casos resulta útil.
Patrones de comportamiento
- Patrones de comportamiento
Cómo distribuir responsabilidades y coordinar objetos sin volver difíciles de mantener sus interacciones.
- Chain of Responsibility
Cómo procesar una solicitud mediante una cadena de manejadores y desacoplar a quien la envía de quienes pueden atenderla.
- Command
Cómo representar acciones como objetos para encolarlas, registrarlas o permitir deshacerlas, separándolas del código que las invoca.
- Interpreter
Cómo representar las reglas de un lenguaje simple mediante objetos y combinarlos para interpretar expresiones.
- Iterator
Cómo recorrer una colección sin exponer su estructura interna ni acoplar el recorrido a una implementación concreta.
- Mediator
Cómo centralizar la coordinación entre objetos para reducir sus dependencias directas y simplificar sus interacciones.
- Memento
Cómo guardar y restaurar el estado de un objeto sin exponer sus detalles internos.
- Observer
Cómo notificar cambios a los objetos suscriptos sin depender de sus clases concretas y qué implica esa relación para el diseño.
- State
Cómo organizar el comportamiento de un objeto según su estado y hacer explícitas las transiciones permitidas.
- Strategy
Cómo encapsular variantes de un algoritmo e intercambiarlas sin modificar el código que las utiliza.
- Template Method
Cómo definir la secuencia de un algoritmo en una clase base y permitir que las subclases adapten determinados pasos.
- Visitor
Cómo agregar operaciones sobre una estructura de objetos sin modificar sus clases cada vez y qué límites tiene este enfoque.
Comparaciones y referencia
- Patrones de diseño que suelen confundirse
Algunos patrones tienen estructuras parecidas, pero resuelven problemas distintos. Qué los diferencia y cómo reconocer cuándo usar cada uno.