OCP--开闭原则--开闭原则--描述:描述:-对扩展开放(open)对扩展开放()-对修改关闭(closed)对修改关闭()
OCP解释解释
原因:
稳定性--不修改源码可保证
系统稳定稳定性--不修改源码可保证系统稳定--扩展性----通过扩展提供新的或者改变原有的功扩展性--通过扩展提供新的或者改变原有的功能,让系统具有灵活的可扩展性
重要性:
是OO设计是否正确的最基本的原理之一设计是否正确的最基本的原理之一
OCP应用
可以把这些不变的部分加以抽象成不变的接可以把这些不变的部分加以抽象成不变的接这些不变的接口可以应对未来的扩展;接口可以应对未来的扩展口,这些不变的接口可以应对未来的扩展;接口的最小功能设计原则。根据这个原则,接口的最小功能设计原则。根据这个原则,原有的接口要么可以应对未来的扩展;原有的接口要么可以应对未来的扩展;不足的部分可以通过定义新的接口来实现;分可以通过定义新的接口来实现;模块之间的调用通过抽象接口进行,模块之间的调用通过抽象接口进行,这样即使实现层发生变化,也无需修改调用方的代码。使实现层发生变化,也无需修改调用方的代码。
总结:
软件系统是否有良好的接口(抽象)设计是判断软件系统软件系统是否有良好的接口(抽象)是否满足开闭原则的一种重要的判断基准。是否满足开闭原则的一种重要的判断基准。现在多把开闭原则等同于面向接口的软件设计。现在多把开闭原则等同于面向接口的软件设计。接口的软件设计
注意:注意:此章或OOD中涉及到的接口都是指广义的,代表抽象类中涉及到的接口都是指广义的,此章或中涉及到的接口都是指广义的和接口
DIP--依赖倒置原则--依赖倒置原则--
描述:
A.高层模块不应该依赖于低层模块,二者都应该高层模块不应该依赖于低层模块,依赖于抽象B.抽象不应该依赖于细节,细节应该依赖于抽抽象不应该依赖于细节,象
DIP具体描述:具体描述:具体描述
HighLevelClasses(高层模块)(高层模块)AbstractionLayer(抽象接口层)(抽象接口层)LowLevelClasses(低层模块)(低层模块)
UML类图结构
DIP解释
抽象接口是对低层模块的抽象,低层模块继承或抽象接口是对低层模块的抽象,实现该抽象接口。实现该抽象接口。这样,高层模块不直接依赖低层模块,高层模块这样,高层模块不直接依赖低层模块,与低层模块都依赖抽象接口层。与低层模块都依赖抽象接口层。当然,抽象也不依赖低层模块的实现细节,低层当然,抽象也不依赖低层模块的实现细节,模块依赖(继承或实现)抽象定义。模块依赖(继承或实现)抽象定义。