
Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley Professional Computing Series) by Erich Gamma
Four software designers present a catalog of simple and succinct solutions to commonly occurring design problems, using Smalltalk and C++ …