Saltar al contenido
DevPedia

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

  1. ¿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

  1. 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.

  2. 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.

  3. Abstract Factory

    Cómo crear familias de objetos compatibles sin depender de sus clases concretas y mantener esa compatibilidad al cambiar de implementación.

  4. Builder

    Cómo construir objetos paso a paso cuando un constructor con muchos parámetros se vuelve difícil de usar y mantener.

  5. Prototype

    Crear objetos a partir de otros existentes puede simplificar su construcción. Cómo funciona la clonación y qué cuidados requiere.

  6. Singleton

    Cómo garantizar una única instancia y qué consecuencias tiene ofrecer acceso global a ella para las dependencias y los tests.

Patrones estructurales

  1. Patrones estructurales

    Cómo combinar clases y objetos para adaptar interfaces, extender comportamientos y simplificar el uso de componentes complejos.

  2. Adapter

    Cómo integrar componentes con interfaces incompatibles mediante un adaptador, sin modificar sus implementaciones.

  3. Bridge

    Cómo separar una abstracción de su implementación para que ambas puedan evolucionar sin crear una subclase por cada combinación.

  4. 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.

  5. Decorator

    Cómo agregar comportamiento a un objeto mediante composición y combinar extensiones sin crear una subclase para cada variante.

  6. Facade

    Cómo ofrecer una interfaz simple para un subsistema complejo y evitar que sus clientes tengan que coordinar cada componente.

  7. 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.

  8. 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

  1. Patrones de comportamiento

    Cómo distribuir responsabilidades y coordinar objetos sin volver difíciles de mantener sus interacciones.

  2. Chain of Responsibility

    Cómo procesar una solicitud mediante una cadena de manejadores y desacoplar a quien la envía de quienes pueden atenderla.

  3. Command

    Cómo representar acciones como objetos para encolarlas, registrarlas o permitir deshacerlas, separándolas del código que las invoca.

  4. Interpreter

    Cómo representar las reglas de un lenguaje simple mediante objetos y combinarlos para interpretar expresiones.

  5. Iterator

    Cómo recorrer una colección sin exponer su estructura interna ni acoplar el recorrido a una implementación concreta.

  6. Mediator

    Cómo centralizar la coordinación entre objetos para reducir sus dependencias directas y simplificar sus interacciones.

  7. Memento

    Cómo guardar y restaurar el estado de un objeto sin exponer sus detalles internos.

  8. 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.

  9. State

    Cómo organizar el comportamiento de un objeto según su estado y hacer explícitas las transiciones permitidas.

  10. Strategy

    Cómo encapsular variantes de un algoritmo e intercambiarlas sin modificar el código que las utiliza.

  11. Template Method

    Cómo definir la secuencia de un algoritmo en una clase base y permitir que las subclases adapten determinados pasos.

  12. 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

  1. 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.

Buscá por concepto, patrón o práctica.