Design Patterns : Elements of Reusable Object-Oriented Software


Design Patterns is a seminal work that has brought about industry-wide improvements to the design of systems and changes to systems. The patterns described have been distilled out of the practices of experts. They allow less experienced designers to benefit from the tried and tested methods used to solve frequently experienced problems. The book also details where the patterns are intended to be used and where their weaknesses lie.

Personally, I found the book quite hard-going and would strongly recommend Head First Design Patterns if you are looking for an easier read. After reading Head First Design Patterns, I found Design Patterns to be an excellent resource for reference. I always keep a copy on my desk.