Design patterns: Abstraction and reuse of object-oriented design (1993)

by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Venue:ECOOP '93