Okay, there is one book that really started it all, and you have to have it:
Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (The Gang of Four - GOF) One problem with this book, I found, was that it was language agnostic. If the examples were in
Java, I could understand it more, but they weren't, and I found that frustrating.
The GOF book is over 10 years old. Here's a book that is Java based, on Design Patterns, that is less that 1 year old. I'd suggest picking this up to:
Design Patterns in Java (Software Patterns Series) by Steven John Metsker, William C. Wake This is also a good, Java based tutorial on Deisgn Patterns. It's a bit long in the tooth, but design patterns really don't change over time:
Java Design Patterns: A Tutorial by James W. Cooper While you're at it, I would
highly, highly, highly recommend a book on Refactoring code as well. Design Patterns and Refactoring really go hand in hand. The Refactoring book is a must have on any Java bookshelf, and it's an easy read as well:
Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts Cheers!
-Cameron McKenzie
[ January 11, 2007: Message edited by: Bear Bibeault ]