“Design Patterns: Elements of Reusable Object-Oriented Software” was written by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, a quartet often called the “Gang of Four.” It was published by Addison-Wesley in 1994, with the publisher listing the date as October 31, 1994. The book grew out of work the four authors had been doing in the object-oriented community, including an earlier paper presented at the 1993 ECOOP conference.
The book’s central idea is that experienced designers reuse solutions that have worked for them before, and that these recurring solutions can be named, described, and shared. It catalogues 23 patterns, organized into three groups: creational patterns concerned with object creation, structural patterns concerned with how classes and objects are composed, and behavioral patterns concerned with how objects communicate and assign responsibility.
Each pattern is presented in a consistent format covering its intent, motivation, structure, participants, consequences, and sample code. Two design principles run through the catalogue and are repeatedly emphasized by the authors: program to an interface, not an implementation, and favor object composition over class inheritance.
The book became one of the most influential works in software engineering, selling hundreds of thousands of copies and giving developers a shared vocabulary. In a later interview Gamma cautioned against overusing patterns, recommending that designers refactor toward patterns as problems emerge rather than forcing every pattern into a design from the start.