Logotipo de ConstructiCat
CodeBust.
Explorar la sección ▾

¿Qué es un patrón de diseño?.

Los patrones de diseño son soluciones típicas a problemas que ocurren con frecuencia en el diseño de software. Son como planos prefabricados que puedes personalizar para resolver un problema de diseño recurrente en tu código.

No puedes simplemente encontrar un patrón y copiarlo en tu programa, como sí puedes hacer con funciones o bibliotecas ya hechas. El patrón no es una pieza de código específica, sino un concepto general para resolver un problema concreto. Puedes seguir los detalles del patrón e implementar una solución que se ajuste a las particularidades de tu propio programa.

A menudo se confunden los patrones con los algoritmos, porque ambos conceptos describen soluciones típicas a ciertos problemas conocidos. Mientras que un algoritmo siempre define un conjunto claro de acciones con las que se puede lograr un objetivo, un patrón es una descripción más de alto nivel de una solución. El código de un mismo patrón aplicado a dos programas diferentes puede ser distinto.

Una analogía de un algoritmo es una receta de cocina: ambos tienen pasos claros para alcanzar un objetivo. Por otro lado, un patrón se parece más a un plano: puedes ver cuál es el resultado y sus características, pero el orden exacto de implementación depende de ti.

¿En qué consiste un patrón?

La mayoría de los patrones se describen de forma muy formal para que las personas puedan reproducirlos en muchos contextos. Estas son las secciones que suelen estar presentes en la descripción de un patrón:

  • El propósito del patrón describe brevemente tanto el problema como la solución.
  • La motivación explica con más detalle el problema y la solución que el patrón hace posible.
  • La estructura de clases muestra cada parte del patrón y cómo se relacionan entre sí.
  • Un ejemplo de código en uno de los lenguajes de programación populares facilita captar la idea que hay detrás del patrón.

Algunos catálogos de patrones incluyen otros detalles útiles, como la aplicabilidad del patrón, los pasos de implementación y las relaciones con otros patrones.