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