Design Patterns: Elements of Reusable Object-Oriented Software (1994)

by E Gamma