Un patrón de diseño es una clase de problemas que son muy similares o iguales, y se pueden resolver de una manera particular. ¿Podrían algunos problemas pertenecer a más de una clase, o ninguna de las clases existentes?

Me gusta la cerveza.

He preparado y estudiado varios estilos de cerveza de todo el mundo. La cerveza es más que variada en sabores, contenido de alcohol, amargura y complementos que los vinos. Hay una amplia gama de estilos y tipos que se han documentado cuidadosamente para que haya diferencias específicas entre un Munich Helles Lager, un Belgian Strong Ale y un Irish Stout.

¿De dónde vienen estos estilos? La organización de los estilos de cerveza se produjo después del desarrollo de las cervezas. Los cerveceros, durante miles de años, elaboraron cerveza con ingredientes locales y ajustaron y experimentaron con las recetas para encontrar lo que más le gustaba a la gente. Un cervecero en lo que ahora es la República Checa no consultó a alguna autoridad sobre lo que constituye un Pilsner; el estilo es el resultado de muchos, muchos lotes con sus vecinos regresando y preguntando: “¿Tienes algo más de eso de la semana pasada? ¡Es realmente muy bueno! ”Algunas de las cervezas realmente buenas que he probado son combinaciones de estilos o están fuera de cualquier estilo existente. La buena cerveza no siempre se ajusta a las pautas de estilo BJCP.

¿Cómo se relaciona esto con los patrones de diseño? Los patrones son el resultado de observar el software, bien diseñado y no, y descubrir qué soluciones a problemas comunes producen los mejores resultados. Algunos problemas son notablemente similares a los problemas anteriores, mientras que otros pueden dar un giro que podría no encontrarse comúnmente. Los patrones son un intento de observar el cuerpo de trabajo existente para intentar conectar algunos de los puntos, por así decirlo.

El conocimiento de los patrones es importante, pero la estricta adherencia a los patrones es restrictiva. No todos los problemas encajan perfectamente en una solución preconcebida. Un buen desarrollador tiene la capacidad de aplicar un patrón cuando sea apropiado y comprender cuándo un patrón no es el mejor diseño.

Al igual que los estilos de cerveza, el mundo no encaja en paquetes bonitos y ordenados. El mundo es desordenado y, como desarrollador, necesitas escribir software para ese mundo desordenado.