Head First Design Patterns
Building Extensible and Maintainable Object-Oriented Software
Eric Freeman
Books Similar to Head First Design Patterns