Johnson and John Vlissides: Design Patterns: Elements of Reusable Object-Oriented (1995)

by Eric Gamma, Richard Helm, Ralph