Design patterns explained : a new perspective on object-oriented design - Shalloway, Alan (The software patterns series, 2005)