Another book I recommend reading: Head First Design Patterns.
I need to say I only managed to read it when I tried for the second time. First time I gave up after three or four chapters. Although I believed the provided definitions, examples, code snippets were good, I was fed up with all this Zen talks, interviews with design patterns, and even their chit-chats.
However I decided to give it a try. I finished reading this book yesterday and I need to admit I’m very happy I did it! The book covered the most popular design patterns (e.g. decorator, abstract factory, proxy, observer) and presented them by showing how existing code can be improved by introducing them. It also reminded several object-oriented programming rules (e.g. polymorphism, Law of Demeter), meaning of Gang of Four, and good practises of using design patterns (when usem and when not). Now i need to say event design patterns chit-chats were crutial as they were supposed to repeat and consolidate given study.