Anyone who's ever tried to read the traditional GoF design patterns book, or any other book on the subject for that matter, has probably been bored to death. This is sad, since there is a lot of smarts in these patterns that people have already thought of for us, and using them - when appropriate - should really become a second nature to every programmer.
No worry, though, since I will now tell you the best possible way to learn about the classic design patterns, and that is to read Head First Design Patterns. I am now reading this book, which I borrowed from a friend, and it is really a joy to go through. With clear examples, lots of humor and a whole bunch of drawings and pictures - the "head first" way of teaching really seem to work.
You really have to read this to understand, but when a book contains, for example, sessions of two patterns that are being interviewed by a talk-show host, you can see that something special is going on. The authors have gone out of their way to find the best way to get each piece of knowledge into your head and make you remember it.
The only disadvantage of this book that I could find is that all the examples are in Java. It's not much of an issue, except in chapters such as the one about the Observer pattern, where mentioning the way C#'s events implement this seems mandatory to me.
Nevertheless, if you're going to buy a single design patterns book - this should be it. I'm definitely going to have all the programmers in my team read it.