重构获得模式 Refactoring to Patterns
- 面向对象设计模式是"好的面向对象设计",而好的设计指的是可以满足"应对变化",提高复用
- 现代软件设计的特点是"需求的频繁变化",设计模式是在"寻找变化点",然后在
变化点
应用设计模式,从而更好地应对需求的变化.
什么时候,什么地点应用设计模式比"理解设计模式结构本身"更为重要.
除非非常有经验,否则设计模式都应该通过重构而来.
- 设计模式不应该先入为主,一上来就是用设计模式就是对设计模式的最大误用.没有一步到位的设计模式.
敏捷开发实践倡导的是"Refactoring to Patterns".
相关书籍
- 重构-改善既有代码的设计
- 重构与模式
重构关键技法
比某些单纯的模式更加重要
- 静态 -> 动态
- 早绑定 -> 晚绑定
- 继承 -> 组合
- 编译时依赖 -> 运行时依赖
- 紧耦合 -> 松耦合
面向对象设计原则
开闭原则
- 对扩展开放,对更改封闭
- 类模块应该是可扩展的,但是不可修改
单一职责原则
- 一个类应该仅有一个引起它变化的原因
- 变化的方向隐含类的责任
里氏代换原则
- 子类必须能够替换他们的基类(IS-A)
- 继承表达类型抽象
接口隔离原则
- 不应该强迫客户程序依赖它们不用的方法
- 接口应该小而完备
依赖倒置原则
- 高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定).
- 抽象(稳定)不应该依赖于实现细节(变化),实现细节应该依赖于抽象(稳定)
面向接口编程
- 不将变量类型声明为某个特定的具体类,而是声明为某个接口
- 客户程序无需获知对象的具体类型,只需要知道对象所具有的接口
- 减少系统各个部分的依赖关系,从而实现"高内聚,低耦合"的类型设计方案