Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software is a good book. I had to read about 50 pages before I started to enjoy it.

I recommend this book.