1. Refactoring: improving the design of existing code;Fowler,1993
2. Refactoring to patterns;Kerievsky,2004
3. Design patterns: elements of reusable object-oriented software;Gamma,1995
4. Pattern-oriented software architecture: a system of patterns;Buschmann,1996
5. Software architecture in practice;Bass,2004