Dependency-Inversion Principle
a.高层模块不应该依赖于低层模块,二者都应该依赖于抽象.
b.抽象不应该依赖于细节,细节应该依赖于抽象.
高层模块包含了一个应该程序中的重要的策略选择和业务模型.正是这些高层模块才使得其所有的应用程序区别于其他.如果高层依赖于低层,那么对低层模块的改动就会直接影响到高层模块,从而迫使它们依次做出改动.
类似于OCP原则.
每个较高层次都为它所需要的服务声明一个抽象接口,较低的层次实现这些抽象接口,每个高层类都通过该抽象接口使用下一层的服务,接口属于高层,低层要实现高层的接口,因此现在是低层依赖于高层.
是依赖关系倒置和接口所有权的倒置.
依赖于抽象.
启发式规则:
1.任何变量都不应该持有一个指向具体类的指针或者引用.
2.任何类都不应该从具体类派生(始于抽象,来自具体)
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法.
a.高层模块不应该依赖于低层模块,二者都应该依赖于抽象.
b.抽象不应该依赖于细节,细节应该依赖于抽象.
高层模块包含了一个应该程序中的重要的策略选择和业务模型.正是这些高层模块才使得其所有的应用程序区别于其他.如果高层依赖于低层,那么对低层模块的改动就会直接影响到高层模块,从而迫使它们依次做出改动.
类似于OCP原则.
每个较高层次都为它所需要的服务声明一个抽象接口,较低的层次实现这些抽象接口,每个高层类都通过该抽象接口使用下一层的服务,接口属于高层,低层要实现高层的接口,因此现在是低层依赖于高层.
是依赖关系倒置和接口所有权的倒置.
依赖于抽象.
启发式规则:
1.任何变量都不应该持有一个指向具体类的指针或者引用.
2.任何类都不应该从具体类派生(始于抽象,来自具体)
3.任何方法都不应该覆写它的任何基类中的已经实现了的方法.