9780201633610
Design Patterns : Elements of Reusable Object-Oriented Software
Gamma, Erich