依赖倒转
什么是依赖倒转原则:比较官方一点的解释是,高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖于抽象,简单点说就是要求对抽象进行编程,不要对实现进行编程,这样就降低客户与实现模块间的耦合。
解释
首先我们要区分的是高层模块和低层模块是什么,比如我们现在有两个类一个是类是A,另一个类是B,同时A类依赖于B类,这里的依赖可以理解为A类里面声明了一个B类的成员变量。
那么这个时候A类就是高层模块而B类就是低层模块。抽象不应该依赖细节这里的细节指的就是实现类或者其子类。
以上这个例子中B类它是一个具体的类,我们把A需要依赖的部分抽取出来作为一个抽象父类或者父接口,同时A类不直接依赖于B类,而是去依赖新的抽象类或接口。
大致的依赖可以通过以下图片进行理解:
这里的依赖其实也可以理解为类图中的依赖关系。
其实也可以这样理解,依赖倒转原则可以看作是设计模式中开闭原则的具体实现。
在设计模式中可以把开闭原则看作是目标,里氏代换原则看作是基础,当前的依赖倒转原则看作是实现目标的一种手段。
在编写代码的过程中尽可能的遵守设计模式原则可以避免在工作过程中出现的一些奇奇怪怪的Bug,从而提高工作效率,同时也可以拥有很优雅的编程规范减少后续的维护成本。