2009-12-13

471. Design patterns, d'Erich Gamma, Richard Helm, Ralph Johnson i John Vlissides

Design patterns
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, 1994
Anglès
Ed. Addison-Wesley
381 p.
ISBN 978-0-201-63361-0

Design patterns seria traduïble com a patrons de disseny. Fa referència a la creació, en l'àmbit de la programació informàtica, d'un conjunt de descripcions de recursos usats per a la creació de programes i la resolució dels problemes que apareixen en la creació de programes.

Així com l'arquitectura és deutora de Christopher Alexander en la seva anàlisi i descripció dels patrons que intervenen en l'arquitectura, el grup de quatre autors (coneguts com a Gang of Four) que van escriure Design Patterns (amb el subtítol Elements of reusable object-oriented software) van fer evident a tothom per primera vegada que és possible crear un llenguatge de solucions de disseny de programari que permeti als programadors expressar els problemes a resoldre i les seves solucions.

Així com un arquitecte pot parlar d'una porta, una finestra o un arc i sap perquè serveix cadascun d'aquests elements (són patrons de disseny), encara que puguin ser construïts de mil maneres diferents (en funció de gustos, pressupostos, adaptabilitat, etc.), un programador informàtic pot parlar d'una instància única, un prototip o una fàbrica abstracta i establir una comunicació amb el seu client, equip de treball o la documentació del projecte.

Design patterns no és un llibre per aprendre a programar, sinó un llibre necessari per passar a programar bé, sobretot quan es treballa en equip. El llibre no explica trucs ni dóna consells per a usar un o altre llenguatge (tot i que la majora d'exemples són en C++) sinó que és un recull de solucions abstractes, que no són aplicables directament als nostres projectes sinó que ens fan pensar de quina manera apareixen als nostres projectes. O de quina manera podrien aparèixer-hi per simplificar i millorar els nostres projectes.

Al ser un llibre teòric sobre teoria de la programació, es pot fer farragós per al lector que busca consells pràctics per a la programació. Per aquests casos, en C++, recomano els altres llibres que he comentat en aquest blog, els d'Scott Meyers, Herb Sutter i Andrei Alexandrescu.

El llibre parla dels següents patrons de disseny.

  • Creational patterns
    • Abstract factory
    • Builder
    • Factory method
    • Prototype
    • Singleton
  • Structural patterns
    • Adapter
    • Bridge
    • Composite
    • Decorator
    • Facade
    • Flyweight
    • Proxy
  • Behavioral patterns
    • Chain of reponsability
    • Command
    • Interpreter
    • Iterator
    • Mediator
    • Memento
    • Observer
    • State
    • Strategy
    • Template method
    • Visitor

A partir de l'aparició d'aquest llibre, molts altres autors han aportat noves idees en el disseny de patrons informàtics, però llegir (i entendre) aquest llibre ja és una bona base de treball.

La meva valoració: un llibre necessari a la biblioteca del bon programador. Difícil de digerir a vegades però pot oferir bones solucions a problemes estancats. Ideal per crear un llenguatge comú en l'equip de programadors.

Articles relacionats: