Los patrones de diseño de software

Los patrones de diseño de software
Facebook Twitter Flipboard E-mail

En toda tarea humana, podemos encontrar una serie de patrones que se repiten. Incluso en las bellas artes, actividad representativa de la creatividad humana, podemos hallar características comunes que nos permiten clasificar las obras en distintos movimientos artísticos. Y cómo no, en el arte de la programación no iba a ser menos.

Era de esperar, por tanto, que alguien se animara tarde o temprano a estudiar los distintos patrones que pueden encontrarse en la inmensa mayoría del software, de forma que los problemas solucionados por estos quedasen perfectamente clasificados junto con su solución, para que así no fuese necesario reinventar la rueda cada vez que un programador se enfrentase a un obstáculo similar al descrito en uno de estos patrones. Nacieron así los patrones de diseño de sistemas software.

Primera aparición

Aunque fue en 1987 cuando apareció el primer artículo que hablaba de patrones del lenguaje en programas orientados a objetos, no fue probablemente hasta 1990 cuando comenzaron a ser conocidos extensamente por la comunidad de desarrolladores. Ese año se publicaba el libro “Design Patterns”, escrito por el grupo Gang of Four, el cual estaba compuesto por Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides. En este famosísimo libro, a menudo referenciado como GoF, los autores recogían 23 patrones comunes en el diseño de software, explicando al detalle en qué consistían y describiendo las soluciones adoptadas típicamente para cada problema. Toda una enciclopedia sobre diseño de software para el programador. Por eso me sorprende que, a día de hoy, existan universidades donde aún no se han preocupado de tocar este tema.

Requisitos de un patrón de diseño

Un patrón de diseño debe cumplir al menos dos requisitos para considerarse como tal: Debe ser efectivo, de modo que se haya podido comprobar su éxito resolviendo problemas anteriores; y debe ser reutilizable, es decir, podemos aplicarlo a problemas que se hallan en circunstancias similares a las descritas por el patrón.

Los patrones descritos en GoF se dividen en tres tipos: Creacionales (¿te suenan las factorías o las instancias singleton?), estructurales (¿has oído hablar por ejemplo de proxy o adapter?), y de comportamiento (observers, iteradores, etc). Su conocimiento y estudio permiten reconocer los problemas más típicos de forma rápida y efectiva, resolviéndolos en tiempos récord sin sacrificar demasiado la extensibilidad. Y sobre todo, permite mantener un lenguaje común entre programadores a la hora de referenciar un problema: Imagina cuán sencillo sería poder comentar un problema de diseño con un compañero, y poder decirle algo tan sencillo como: “Esto es un patrón adapter”; siendo este breve comentario suficiente como para que tu interlocutor te entendiese perfectamente y sepa cómo hay que resolver el problema al que os enfrentáis.

Bibliografía recomendada

Aunque intentaré escribir poco a poco en este blog acerca de algunos de los patrones de diseño más típicos, con ejemplos, es posible que los que no los conozcáis estéis deseando estudiarlos. Así que os propongo la lectura de uno de estos dos libros:

Aunque ambos tratan bastante bien los patrones de diseño, Head First es quizás una aproximación a éstos algo más moderna, y la forma en que está escrito, con un lenguaje más informal y cargado de divertidas ilustraciones, invita a una lectura cómoda y práctica. Los ejemplos de código para explicar estos patrones están escritos todos en Java.

Existen obras más específicas que cubren los patrones de diseño desde la perspectiva de otros lenguajes de programación, como Ruby, pero esto lo trataremos en un próximo artículo.

Comentarios cerrados
Inicio