Design patterns explained : a new perspective on object-oriented design - Shalloway, Alan (Addison-Wesley, 2005)