面向对象设计模式 OOAD
面向对象的三大特性:封装、继承、多态
三大基本设计原则:
1。封装变化
2。面向接口编程而非实现
3。优先使用组合
设计原则:
1。单一职责原则
一个类只有一个单独的职责,多有的对象只关注自身职责的完成。
2。开放关闭原则
对扩展时开放的对修改是关闭的。
实现方法:
a。抽象化,将系统设计为不再更改的架构,抽象层预见了所有的扩展,在
需要改变的时候只需要添加相应的实现。
b。封装变化,可变化的行为放在一个对象里,即:“对可变性封装”
3。里氏替换的原则
子类型可以完全替换父类型
实现方法:
a。抽象一个父类
b。使用聚合
4。依赖倒置原则
高层模块不依赖于底层模块,都依赖于抽象
5。接口隔离原则
一个接口一封装了只种职责。
6。迪米特原则
类的单一职责原则的延续。
名次解释:
高内聚:对象内部
低耦合:对象之间
三层视角理论:
概念视角:呈现所研究领域的各种模型,模型设计时尽可能的不考虑实现
解决的问题是:策略性的结论,软件要负责什么
规约视角:考虑软件,考虑接口和而不是实行
解决的问题:软件各部分的交流
实现视角:代码和数据的处理
解决编码
概念视角和规约视角都是抽象的,是一个个行为;概念层是对象职责的清晰化,规约层是对象怎么协作,协作方式就是对象之间的契约。(单一原则,关注接口而非实现)
概念层是最稳定的,实现层是最不稳定的,所有高层不应该依赖底层,两者都应该依赖抽象。对象在概念层存在耦合,在实现层不能耦合。
所有的交换都是用基类,一个从基类派生的子类应支持基类所有行为,子类必能替换基类。