面向对象分析与设计设计模式:可复用面向对象软件的基础敏捷软件开发:原则、模式与实践重构:改善既有代码的设计refactoring to patterns学习了面向对象语言,并不一定能够变出面向对象的好程序