<( ̄︶ ̄)小小程序员

<( ̄︶ ̄)小小程序员

关于依赖倒转原则,对应的是两条非常抽象的描述:
1.高层模块不应该依赖低层模块,两个都应该依赖抽象。
2.抽象不应该依赖细节,细节应该依赖抽象。

先用人话解释一下这两句话中的一些抽象概念:
1.高层模块:可以理解为上层应用,就是业务层的实现
2.低层模块:可以理解为底层接口,比如封装好的API、动态库等
3.抽象:指的就是抽象类或者接口,在C++中没有接口,只有抽象类
先举一个高层模块依赖低层模块的例子:

【10】c++设计模式——>依赖倒转原则-LMLPHP
我们可以设计一个抽象类,一个子类用作MySql接口,另一个子类用作Oracle接口。
抽象类中提供的接口是固定不变的,底层模块是抽象类的子类,继承了抽象类的接口,并且可以重写这些接口的行为;高层模块想要实现某些功能,调用的是抽象类的函数接口,并且是通过抽象类的父类指针引用其子类的实例对象(用子类类型替换父类类型),这样就实现了多态。
基于依赖倒转原则将项目的结构换成上图的这种模式之后,低层模块发生变化,对应高层模块是没有任何影响的,这样程序猿的工作量降低了,代码也更容易维护(说白了,依赖倒转原则就是对多态的典型应用)。

里式转换原则

所谓里式转换原则就是子类必须能够替换掉他们的父类类型。比如父类定义一个人的类型,会飞,会游泳,身高180cm,那么子类就不能是武大郎,土行孙,因为身高不满足。

10-04 18:44