Object-Oriented Software Development Using Java : Principles, Patterns, and Frameworks - Jia, Xiaoping (Addison-Wesley)