Skip to content

Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software is a foundational book in software engineering written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides.

It is available on Amazon:

It introduced a catalog of 23 classic design patterns that describe common solutions to recurring problems in object-oriented design, such as:

  • Creational (e.g. Factory Method, Singleton) → how objects are created.
  • Structural (e.g. Adapter, Composite) → how classes and objects are composed.
  • Behavioral (e.g. Observer, Strategy) → how objects communicate and assign responsibilities.

The book’s impact:

  • Gave developers a shared vocabulary (“use a Strategy here” vs. long explanations).
  • Influenced software design education and practice across languages (C++, Java, C#, etc.).
  • Encouraged thinking in terms of abstractions and reusable patterns rather than ad-hoc solutions.