Head First Design Patterns
Building Extensible and Maintainable Object-Oriented Software
You know you don't want to reinvent the wheel, so you look to design patterns--the lessons learned by those who've faced the same software design problems. With design patterns, you get to take advantage of the best practices and experience of others so that you can spend your time on something more challenging. Something more fun. This book shows ...