依赖反转原则

✍ dations ◷ 2025-12-05 05:30:23 #软件设计模式,软件设计,编程原则,面向对象的程序设计

在面向对象编程领域中,依赖反转原则(Dependency inversion principle,DIP)是指一种特定的解耦(传统的依赖关系创建在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。

该原则规定:

该原则颠倒了一部分人对于面向对象设计的认识方式。如高层次和低层次对象都应该依赖于相同的抽象接口。

在传统的应用架构中,低层次的组件设计用于被高层次的组件使用,这一点提供了逐步的构建一个复杂系统的可能。在这种结构下,高层次的组件直接依赖于低层次的组件去实现一些任务。这种对于低层次组件的依赖限制了高层次组件被重用的可行性。

依赖反转原则的目的是把高层次组件从对低层次组件的依赖中解耦出来,这样使得重用不同层级的组件实现变得可能。把高层组件和低层组件划分到不同的包/库(在这些包/库中拥有定义了高层组件所必须的行为和服务的接口,并且存在高层组件的包)中的方式促进了这种解耦。由于低层组件是对高层组件接口的具体实现,因此低层组件包的编译是依赖于高层组件的,这颠倒了传统的依赖关系。众多的设计模式,比如插件,服务定位器或者依赖反转,则被用来在运行时把指定的低层组件实现提供给高层组件。

应用依赖反转原则同样被认为是应用了适配器模式,例如:高层的类定义了它自己的适配器接口(高层类所依赖的抽象接口)。被适配的对象同样依赖于适配器接口的抽象(这是当然的,因为它实现了这个接口),同时它的实现则可以使用它自身所在低层模块的代码。通过这种方式,高层组件则不依赖于低层组件,因为它(高层组件)仅间接的通过调用适配器接口多态方法使用了低层组件,而这些多态方法则是由被适配对象以及它的低层模块所实现的。

另一个例子是台灯和按钮的例子。

依赖反转原则由罗伯特·C·马丁(英语:Robert Cecil Martin)提出,并且在数篇公开著作中被表述,包括论文《面向对象设计质量标准:对于依赖的分析》,以及一篇1996年出现在C++报道中的名为《依赖反转原则》的文章,和《敏捷软件开发,原则,模式和实践》,《C#中的敏捷原则,模式和实践》两本书。


相关

  • 酶联免疫吸附法酶联免疫吸附试验(又称酵素免疫分析法,Enzyme-linked immunosorbent assay (ELISA),简称酶联法)利用抗原抗体之间专一性键结之特性,对检体进行检测;由于结合于固体承载物(一般为塑
  • 卵形疟原虫卵形疟原虫(Plasmodium ovale)是一种疟原虫,可引发卵形疟,和另外两种主要的疟原虫(恶性疟原虫和间日疟原虫)相比较为少见。一般在感染后12-20天内发作,但有潜伏4年的案例存在。每次
  • 理论物理理论物理学(英语:Theoretical physics)通过为现实世界建立数学模型来试图理解所有物理现象的运行机制。通过“物理理论”来条理化、解释、预言物理现象。:9丰富的想像力、精湛
  • 儿少未成年人(未成年者或未成人)是一个社会学或者法学的概念,即是还没有成年的人。在很多国家的法律上,未成年人即是未满法定成年年龄18岁的人。不同的社会或地区对未成年人在心理状
  • 寄木细工寄木细工(よせぎざいく),即木片儿拼花工艺品,是日本箱根特产的一种传统工艺品。已有200年的历史。寄木细工运用木材的天然色泽拼成几何图案,根据木材的颜色来选择不同的木材,包括
  • 危地马拉城危地马拉城(西班牙语:Ciudad de Guatemala)是危地马拉的首都和第一大城市、危地马拉省首府,同时也是中美洲第一大城市。人口根据不同的估算方式,在200万至350万人之间。位于危地
  • 鲁特县鲁特县 (Routt County, Colorado)是美国科罗拉多州西北部的一个县,北邻怀俄明州。面积6,133平方公里。根据美国2000年人口普查,共有人口19,690人。县治斯廷博特斯普林斯 (Stea
  • JİTEM土耳其情报与反恐宪兵队(英语:Gendarmerie Intelligence and Fight against Terrorism ),土耳其安全机构,它主要通过收集情报,审问嫌疑犯和外出作业开展活动。1971年成立,总部设在
  • 马拉坎南宫马拉坎南宫,或称马拉卡南宫,当地又称马拉干鄢宫(Malacañan Palace,旧称Malacañang Palace)是菲律宾的总统府与总统官方居所(不一定为实际官邸)。它座落在马尼拉市的圣米格尔区的
  • 尼古拉·安德烈耶维奇·里姆斯基-科萨科夫尼古拉·安德烈耶维奇·里姆斯基-柯萨科夫(俄语:Николай Андреевич Римский-Корсаков,1844年3月18日-1908年6月21日),俄罗斯作曲家、音乐教育家,在