依赖反转原则

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

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

该原则规定:

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

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

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

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

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

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


相关

  • 秋水仙素秋水仙素(英语:Colchicine)是最初萃取于百合科植物秋水仙的种子和球茎的一种植物碱。它是白色或淡黄色的粉末或针状晶体,有剧毒。最先用于治愈风湿病和痛风,但是它的泻药及促进呕
  • 功能动词功能动词,也叫轻动词(Light verb),是一些普通动词在某些情况下独立出来拥有新的用法的一类特殊的动词,这类动词在句子中丢失了其自身的含义,而是需要与另一个实义动词性质的成分
  • 武田制药武田药品(日语:武田薬品/たけだやくひん takeda yakuhin)是日本一家制药公司,自1781年以“近江屋”药商之名成立至今已有200余年的历史。其于欧洲各国、韩国、泰国、新加坡、马
  • 嘉庆嘉庆(满语:ᠰᠠᡳᠴᡠᠩᡤᠠᡶᡝᠩᡧᡝᠨ,穆麟德:saicungga fengšen,太清:saiqungga fengxen,大词典:saichungga fengshen;蒙古语:.mw-parser-output .font-mong{font-family:"Menk H
  • 公共行政公共行政学(Public Administration),又称行政学。主要结合政治学和管理学为其理论基础。简言之,行政即是公务的推行、政府的管理,举凡政府机关或公务机构的业务,如何使之有效的加
  • 羟甲戊二酰辅酶A还原酶抑制剂羟甲基戊二酸单酰辅酶A还原酶抑制剂(英语:HMG-CoA reductase inhibitors 或 Statins,简称“HMG-CoA还原酶抑制剂”或“他汀类药物”)是一类抗高血脂药。因他汀类有降低低密度脂
  • 尤金纽斯·瓦尔明约翰尼斯·尤金纽斯·比洛·瓦尔明(Johannes Eugenius Bülow Warming,1841年11月3日-1924年4月2日)为丹麦植物学家,生态学的建立者。
  • 科路美拉科鲁迈拉(英语:Columella,4年-70年)。来自加的斯。著有12卷的《论农业》,主要以散文体写成, 只有卷十以六音步的格律写成。他还有一部篇幅较为短小的有关农业的小册子,其中有关树木
  • 南昌话赣语南昌话是赣语昌都片的一种方言。由于赣语内部的复杂性,真正意义上的南昌话只局限在南昌市区及南昌县管辖的地区,而不包括南昌市管辖的其他县。自上古至有周一代,江西一直都
  • 窗口式空调窗口式空调,是空调电器的其中一种,此类空调一般只会安装在窗户中。此类型的空调相对分体式空调更显细小和浓缩化,因为此类的空调机身包括了制冷和排风装置。一般来说,窗口式空调