Qué son los patrones de diseño: definición y categorías

Clase 14 de 27Curso de Patrones de Diseño y SOLID en Python

Resumen

Los patrones de diseño ofrecen soluciones reutilizables y probadas para problemas comunes en el software. Son como recetas: cada patrón se aplica a circunstancias específicas, ayuda a escribir código más mantenible y reutilizable, y crea un lenguaje común entre desarrolladores para code reviews y peer programming.

¿Qué son los patrones de diseño y por qué importan?

Los patrones de diseño reúnen conocimiento y experiencia documentados por cuatro autores en el libro Design Patterns, conocidos como The Gang of Four o la Banda de los Cuatro. Allí se describen 23 patrones: cinco creacionales, siete estructurales y once de comportamiento. Cada uno se aplica a situaciones concretas, evitando repetir errores ya conocidos en la industria.

Además, al igual que los principios SOLID, promueven prácticas que facilitan el mantenimiento y la reutilización del código. Y algo clave: permiten que equipos distintos “hablen el mismo idioma” al compartir decisiones de diseño.

¿Quiénes son The Gang of Four y qué aportaron?

  • Autores del libro Design Patterns.
  • Catalogaron 23 patrones: 5 creacionales, 7 estructurales, 11 de comportamiento.
  • Compartieron experiencias de solución a problemas comunes en la industria.

¿Qué beneficios ofrecen en relación con SOLID?

  • Código mantenible y reutilizable.
  • Lenguaje común para equipos.
  • Prevención de problemas ya conocidos.

¿Cómo se clasifican y cuándo aplicarlos?

Existen tres categorías. La elección depende de la necesidad: crear objetos complejos, estructurar clases de forma eficiente o coordinar la comunicación entre objetos.

¿Qué son los patrones creacionales?

  • Enfocados en la creación de instancias cuando una clase es compleja, con muchos atributos o condiciones previas.
  • Ayudan a centralizar la lógica de instanciación.
  • Principales: Singleton, Factory Method, Abstract Factory, Builder y Prototype.

¿Qué son los patrones estructurales?

  • Se centran en la composición de clases y objetos para lograr estructuras eficientes y escalables.
  • Relacionados con cómo se combinan clases, atributos y herencias; conectan con la idea de estructuras, pero aplicadas a clases.
  • Principales: Adapter, Bridge, Composite, Decorator, Façade, Flyway y Proxy.

¿Qué son los patrones de comportamiento?

  • Buscan mejorar la comunicación y la asignación de responsabilidades entre objetos.
  • Útiles cuando la interacción entre clases es compleja: envío de datos, proceso y retorno de resultados.
  • Algunos: Observer, Strategy, Command, Iterator, Mediator, State y Visitor.

¿Qué habilidades y conceptos clave desarrollarás?

En el contexto del curso y el proyecto se seleccionan los patrones que mejor encajan con el problema, priorizando los más usados en la industria. Así, se fortalece la toma de decisiones de diseño con base en contexto y evidencia.

¿Qué capacidades te ayudan a mejorar?

  • Identificar circunstancias donde aplicar un patrón específico.
  • Diseñar para mantenibilidad y reutilización.
  • Construir un lenguaje común en equipo durante code reviews y peer programming.
  • Evitar problemas conocidos mediante soluciones probadas.
  • Elegir patrones alineados al contexto del proyecto, no aplicar todos indiscriminadamente.

¿Qué keywords y datos conviene retener?

  • Categorías: creacionales, estructurales, comportamiento.
  • Conteo: 23 patrones en total (5, 7, 11).
  • Autores: The Gang of Four (Banda de los Cuatro), libro Design Patterns.
  • Patrones creacionales: Singleton, Factory Method, Abstract Factory, Builder, Prototype.
  • Patrones estructurales: Adapter, Bridge, Composite, Decorator, Façade, Flyway, Proxy.
  • Patrones de comportamiento: Observer, Strategy, Command, Iterator, Mediator, State, Visitor.
  • Beneficios: código mantenible, reutilizable, lenguaje común, evitar problemas conocidos, afinidad con SOLID.

¿Te gustaría aportar tu experiencia? Déjame en los comentarios qué patrones de diseño conoces y qué has leído de historia sobre ellos.