ooad第二天

设计原则

面向对象设计原则
好的设计
可读性、可复用性、可扩展性、可维护性
上面四个标准太抽象无法考量:高内聚,高耦合
什么是内聚度:定义:表示一个应用程序的单个单元所负责的热我弄数量和多样性内聚与单个类或者单个方法和他类相关。
什么是耦合度: 耦合度表示类和类之间的紧密程度

1单元职责

一个类而言,应该仅有一个引起他变化的原因。永远不让一个类存在多个改变的理由,一个类只应该做和一个任务相关的业务,不应该把过多的业务放在一个类中完成。

2开辟原则

值一个软件实体(类、模块、方法)应该对扩展开放,对修改关闭
开闭原则是设计原则的核心原则
开闭原则的核心带来了灵活性

3里氏替换原则:

父类出现的地方子类一定会出现
子类应该能够完全替换任何父类能够出现的地方
里氏替换原则: 主要是来检查两个类是否经常有继承关系.
动化确性保证:来创建一个新的子类时,符合里氏替换原则的扩展不会给已有的系统引入新的错误。
里氏替换原则给我们的启示
如果子类不能完整的实现父类的方法,或者父类的某些方法,在子类中已经方式 “畸变” 则建议断开父类继承关系,采用依赖,聚集,组合等关系,代替继承。

4依赖倒转原则

高层模块不应该依赖于低层模块,二者都应该依赖于抽象:
抽象不应该依赖于细节,细节应该依赖于抽象。
也就是面向对象编程,不要面向具体编程。
具体耦合关系:发生在两个具体的(可实例化的)类之间,经由一个类对另一个类具体类的直接引用造成。
抽象耦合关系:发生在个具体类和一个抽象类(或接口)之间,使两个必须发生关系的类之间存在最大灵活性。

5聚合组合复用原则:

是指要尽量使用聚合/聚合实现代码复用,少用继承来达到复用目的
组合/聚合复用
继承复用

6接口隔离原则:

是指客户不应该依赖他们用不到的方法,
只给每个客户所需要的接口。
换句话说,就是不能强迫用户
去依赖那些他们不使用的接口,也就是使用专门的接口,比用一个统一的接口好。

7迪米特法则:

又称为最少知识原则,它的定义为:一个软件实体应当尽可能少的与其他实体发生相互作用