Book
Design Patterns: Elements of Reusable Object-Oriented Software
What this book is
The 1994 catalog that gave software design a shared vocabulary. Four authors — Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, collectively the "Gang of Four" — surveyed how expert object-oriented designers solve recurring problems, then wrote each solution down in a rigid, repeatable template. The result is 23 named patterns: not finished code, but proven arrangements of classes and objects you adapt to your own system.
It is a reference work, not a narrative. Every pattern is described the same way — Intent, Motivation, Applicability, Structure, Participants, Collaborations, Consequences, Implementation, Sample Code, Known Uses, Related Patterns — so you can compare patterns the way you'd compare entries in a field guide. This synthesis preserves that structured content rather than re-explaining it: the goal is a working reference, not a teaser.
The one idea behind all 23 patterns
Program to an interface, not an implementation — and favor object composition over class inheritance. Almost every pattern is a concrete tactic for honoring those two principles so that one part of a system can vary without forcing changes everywhere else.
The patterns exist because change is the enemy of reusable software. Each pattern isolates what varies — the algorithm, the object created, the way a structure is traversed, the way a request is handled — behind a stable interface, so that variation becomes a local, swappable decision instead of a system-wide rewrite.
How the catalog is organized
The 23 patterns fall into three families by purpose, and cut across two scopes (whether the pattern is mainly about classes, fixed at compile time, or objects, assembled at run time):
- Creational (5) — abstract the instantiation process: Abstract Factory, Builder, Factory Method, Prototype, Singleton. They let a system stay independent of how its objects are created and composed.
- Structural (7) — compose classes and objects into larger structures: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy. They're about assembling parts while keeping the assembly flexible.
- Behavioral (11) — assign responsibilities and orchestrate communication between objects: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor. They're about the flow of control and the distribution of work.
The topic that follows the catalog families is anchored by a worked case study — designing the Lexi document editor — that applies eight of the patterns to seven real design problems, the book's demonstration of how to select a pattern rather than just read about one.
Who this is for
How to read this synthesis
The topics track the book's own structure. Introduction defines what a pattern is and how the catalog is organized; A Case Study shows pattern selection in action on the Lexi editor; Creational / Structural / Behavioral Patterns are the catalog itself, one topic per family, preserving each pattern's intent, structure, and trade-offs; Conclusion reflects on what patterns give a field. Every catalog topic embeds the source's original UML structure diagrams and sample-code figures.
Per-pattern atomic reference — each pattern as a standalone card with intent, a structural sketch, and related patterns — lives in the companion Design Patterns compendium.