..
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch
The classic book of design patterns for object oriented programming. I enjoyed the brevity, sample code and the discussions of the advantages and disadvantages of each pattern. Some of the patterns I use often, such as the abstract factory, builder and template patterns. Others I cannot remember using, such as the prototype pattern.
Great book and I wish we had more like it.
5/5 stars.