Object-oriented software development in Java : principles, patterns, and frameworks - Jia, Xiaoping (Addison-Wesley, 2000)