关于学习的依赖倒转原则的学习,当时不是很明白,不过在网上学习了一些后多少有些了解了,在生活中我们去一个饭馆点餐的时候都是根据这个饭店的口碑怎么样,招牌菜是什么,但是在代码的世界中这个有一些不一样了,其实依赖倒转的主要思想是对于代码的复用以及减少耦合度。
还是以饭店为例子,在饭店中有很多的菜品,有炒菜、凉菜、干锅、、等等,那么我们就以这些菜品为一个类,具体的菜为它的子类,如果我们要符合依赖倒转原则的话就需要有一个接口在这里了,这样菜品类就不需要依赖于子类来实现了,只需要把接口让子类去实现这样还能减少耦合度,也方便菜品这个类的复用,还易拓展了。
原则:A 高层模块不应该依赖于底层模块。两个都应该依赖于抽象(接口)。 B 抽象不应该依赖细节,细节应该依赖抽象。
说了这个依赖倒转就必须要说一下这个里氏替换,这也就能解释清楚为什么为什么有依赖倒转的原因了,首先里氏替换是指子类型必须能够替换掉它们的父类型。
还是以我们这个饭馆中的菜品为例,如果我们说要炒菜,那么炒菜有很多的个菜,我们总不能每次都要new一个菜来做的,所以有了里氏替换我们直接以父类的名字去实例化一个菜品就行,当然这个菜品必须是炒菜的一个子类才行。这样我们的父类 菜品类 在不需要修改下就可以拓展菜谱了。
炒菜 炒土豆=new 炒土豆丝
炒土豆.盐