Erich Gamma et al. (1994)
Introduces 23 classic design patterns in object-oriented software development.