A Catalog of Object-Oriented Design Patterns (1993)

by E Gamma, R Helm, R Johnson, J Vlissides