5. Clasificación de los patrones: Creacionales, Estructurales y de Comportamiento

El catálogo de patrones descrito por el Gang of Four organiza sus 23 soluciones en tres familias. Esta clasificación facilita decidir qué patrones explorar según la naturaleza del problema: crear objetos, componer estructuras o coordinar colaboraciones. Comprender las diferencias evita elegir patrones por intuición y ayuda a construir diseños coherentes.

En esta unidad repasamos cada familia, los desafíos que aborda y ejemplos concretos de cuándo aplicarla, siempre teniendo en cuenta que un patrón es una guía adaptable, no una receta rígida.

5.1 Panorama general de las tres familias

Las categorías creacional, estructural y de comportamiento responden a preguntas distintas del diseño orientado a objetos:

  • Creacionales: ¿Cómo instanciamos objetos respetando la flexibilidad del sistema?
  • Estructurales: ¿Cómo combinamos clases y objetos para formar arquitecturas más complejas?
  • De comportamiento: ¿Cómo distribuimos responsabilidades y flujos de comunicación entre objetos?

Esta clasificación actúa como un mapa mental: cuando un requisito involucra instanciación, composición o interacción, podemos dirigirnos a la familia apropiada y seleccionar el patrón más adecuado.

5.2 Patrones creacionales

Los patrones creacionales abstraen la lógica de creación de objetos para reducir el acoplamiento con implementaciones concretas. Permiten configurar familias de productos, diferir la instanciación o clonar objetos existentes. Entre los más conocidos se encuentran Singleton, Factory Method, Abstract Factory, Builder y Prototype.

Ventajas habituales:

  • Controlan la complejidad cuando la construcción requiere múltiples pasos.
  • Permiten introducir nuevas variantes de productos sin alterar el código cliente.
  • Favorecen pruebas al sustituir implementaciones concretas por dobles de prueba.

5.3 Patrones estructurales

Esta familia describe cómo ensamblar clases y objetos para formar estructuras más grandes sin perder flexibilidad. Se enfocan en la composición de interfaces, adaptadores y envoltorios. Algunos representantes son Adapter, Bridge, Composite, Decorator, Facade, Flyweight y Proxy.

Los patrones estructurales ayudan cuando precisamos:

  • Integrar componentes incompatibles mediante adaptadores.
  • Compartir representaciones internas para ahorrar memoria.
  • Añadir responsabilidades en tiempo de ejecución sin afectar la clase original.

5.4 Patrones de comportamiento

Los patrones de comportamiento se centran en la asignación de responsabilidades y la comunicación entre objetos. Buscan desacoplar emisores de receptores, encapsular algoritmos intercambiables o gestionar secuencias de pasos. Strategy, Observer, Command, State, Template Method, Visitor, Mediator y Chain of Responsibility son ejemplos destacados.

Beneficios concretos:

  • Facilitan cambiar algoritmos o políticas sin modificar el cliente.
  • Promueven la cohesión al encapsular escenarios de interacción.
  • Permiten aplicar principios como abierto/cerrado o sustitución de Liskov con mayor facilidad.

5.5 Comparativa rápida de objetivos y riesgos

Aunque cada familia resuelve problemas distintos, comparten un principio: separar lo que cambia de lo que permanece estable. No obstante, su uso indebido puede generar sobrediseño. Algunas señales de alerta incluyen crear fábricas innecesarias para objetos triviales, encadenar demasiados decoradores o introducir patrones de comportamiento para comportamientos simples que podrían resolverse con funciones directas.

5.6 Cómo elegir la familia adecuada

Un enfoque práctico consiste en formular preguntas guía:

  • Si la preocupación principal es cómo obtener instancias, revise patrones creacionales.
  • Si necesita organizar o reutilizar componentes existentes, explore los estructurales.
  • Si el reto es coordinar acciones, eventos o reglas, analice los de comportamiento.

Además, combine la clasificación con métricas del proyecto: complejidad ciclomática, número de dependencias y frecuencia de cambios. Esto permitirá evaluar si la adopción de un patrón aporta valor tangible.

5.7 Próximos pasos

En los siguientes temas profundizaremos en cada patrón específico de las tres familias. Mantenga esta clasificación como referencia para detectar rápidamente qué tipo de solución puede responder a los retos que se presenten en sus proyectos.