Design patterns explained : a new perspective on object-oriented design - Alan Shalloway, James R Trott (Addison-Wesley, Boston, 2002)