This blog is no longer updated. Please check my new blog here.

Julien Sobczak

Design Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, Ralph Johnson, John Vlissides, Richard Helm

Un grand classique. lire impérativement encore aujourd'hui. Un travail remarquable qui bouleversé notre manière de concevoir les applications et qui provoqué une déferlante de livres autour des patterns, bien trop nombreux pour être tous cités !

General

Hardcover 0201633612 416 pages

Review

Singleton, Decorator, Factory, Observer, … Ces termes font désormais partie de notre langage et montre bien l’impact dont peu de livres peuvent se vanter d’avoir eu.

Design Patterns: Elements of Reusable Object-Oriented Software n’est plus à présenter. Le nombre de commentaires Amazon et le nombre de références vers cet ouvrage en font sans aucun doute un des livres les plus importants qui n’ait jamais existé et cela n’est pas prêt de s’estomper.

Ce livre été le premier à introduire la notion de patterns dans le développement informatique. Cette notion de pattern, introduite par Christopher Alexander 20 ans plus tôt dans l’excellent livre The Timeless Way of Building, est présentée de manière très claire et suffisamment concise. Pour ceux qui veulent aller plus loin, le livre de C. Alexander reste fortement recommandé.

Les auteurs, surnommés le Gang of Four (GoF), nous présentent au total 23 patterns, parmi lesquels figurent les plus connus. Ces Design Patterns portent sur la conception orienté objet en proposant des solutions pour organiser le code entre différentes classes. On est loin de patterns d’architecture ou d’intégration auxquels d’autres livres aussi excellents s’attaquent, mais cela en fait le livre idéal pour découvrir les patterns.

A lire également une présentation de Peter Norvig, actuel directeur de la recherche chez Google, qui montre que 16 des 23 patterns cacheraient en réalité des lacunes du langage en prenant l’exemple de langage comme Lisp où ces patterns sont soit invisibles, soit nettement plus simples à implémenter.