« 上一篇下一篇 »

依赖倒置原则

依赖底层模块,二者都要依赖与抽象;2)抽象不应该依赖细节,细节应该依赖与抽象。

依赖倒置原则(DIP),通过使代码依赖抽象而不依赖具体实现方式达到解耦的目的。让我们先来回顾一下DIP的定义吧:1)高层模块不应该依赖底层模块,二者都要依赖与抽象;2)抽象不应该依赖细节,细节应该依赖与抽象。

简单点说就是:依赖与抽象,或者可以说程序中所有的依赖关系都应该终止于抽象类或或接口。根据这个理解可以得出以下原则:

1.任何变量都不应该持有一个指向具体类中已经实现了的方法。

2.任何类都不应该从具体类派生。

3.任何方法都不应该覆写它的任何基类中已经实现了方法。

当然,根据实际需要,程序中或多或少会有违反这些规则的情况出现。

依赖注入是DIP的实现。依赖注入是这样一个过程:由于客户类只依赖于服务类的接口,而不依赖于具体类,所以客户类只定义了一个注入点。在程序运行的过程中,客户类不会直接实例化具体的类实例,而是由上下文环境或专门的组件来负责实例化类,然后将其注入客户类中,保证客户类的正常运行。

一般来说,DIP有三种方式,不过比较正常常用的就是以下两种。

1.构造注入:是指在客户类中,设置一个服务类接口类型的数据成员,并以构造函数为注入点,这个构造函数接受一个具体的服务类实例为参数,并将它赋值给服务类接口类型的数据成员。

« 上一篇下一篇 »