依赖反转原则

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

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

该原则规定:

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

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

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

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

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

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


相关

  • 直径在数学尤其是几何学中,直径是圆形的特性之一,是指穿过圆心且其两端点皆在圆周上的线段或者该线段的长度是最长的,一般用符号d或著Ø表示。在一般的度量空间(也就是定义了距离的
  • 描述性描述伦理学(descriptive ethics),研究社会族群所持有的伦理观,这包括风气、习俗、礼仪、法规、对于善与恶的见解、对于各种实际行为的响应等等。它与规范伦理学、元伦理学不同;规
  • 外消旋体外消旋混合物(英语:racemic mixture、racemate,或称为 外消旋体)是等物质的量的一对对映体混合后得到的组成物。第一个制得的外消旋体是路易·巴斯德制得的酒石酸的外消旋混合物
  • 摩亨佐-达罗摩亨佐-达罗(公元前2600年-前1800年),又称“死丘”或“死亡之丘”(Mound of the Dead),是印度河流域文明的重要城市,大约于公元前2600年建成,位于现今巴基斯坦信德省。摩亨佐-达罗是
  • 自由基聚合反应自由基聚合反应是利用连续加成自由基的一种聚合方法所形成的聚合物形式。自由基可以透过一些涉及不同引发剂分子的机制形成。根据这个形成,将基态自由基(非原子团)加上单体单
  • span class=nowrapCusub5/subSi/span硅化铜(Cu5Si)又名硅化五铜,是一种铜的二元硅化合物,为一种金属互化物,这意味着它的性质介于离子化合物和合金之间。可以通过加热铜与硅的混合物得到。立方晶体,其中a = 0.6224 nm
  • 驱赶当地居民的方式东方总计划(德语:Generalplan Ost)是纳粹德国制作的一份计划,主要内容是围绕波兰战役和苏德战争之后如何处置占领地区。德国计划通过移民使得这些地区德国化,并流放斯拉夫人。东
  • 野蛮盗龙野蛮盗龙属(学名:Atrociraptor)是驰龙科下的一个属,生活于上白垩纪麦斯特里希特阶的加拿大阿尔伯塔省。正模标本(编号RTMP 95.166.1)是在1995年发现于亚伯达省德兰赫勒市附近的马
  • 桥仔头糖厂坐标:22°45′28″N 120°18′51″E / 22.7577768°N 120.3141186°E / 22.7577768; 120.3141186桥头糖厂现在名为高雄糖厂,旧称为“桥仔头糖厂”,是台湾第一座现代化机械式制
  • 刚果内战刚果共和国内战是一场1997年6月至1999年12月爆发于刚果共和国的内战,战争双方为总统候选人及其支持者,最终以安哥拉军队入侵、德尼·萨苏-恩格索重返总统宝座而结束。在刚果(布