Refactoring to patterns - Kerievsky, Joshua. (Addison-Wesley, 2005)