I have been reading the ever-classic "Design Patterns: Elements of Reusable Object-Oriented Software". I am a bit behind the times on picking this one up as it was published in 1995. Still a good read if you have no idea about patterns. All the examples are in c++ which is a little hard on the some of the pure .NET developers who have read it. Also some patterns use multiple inheritance which we don't have in the .NET world. I did happen to come accross this
site which has all the patterns from the book updated to use .NET and .NET 2.0 examples. I think they should just republish the book with .NET in mind as a lot of developers I know supprisingly have never programmed in c or c++.