Design Patterns Explained, A New Perspective on Object-Oriented Design, 2e - Alan Shalloway (Addison-Wesley, 2005)