依赖反转原则

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

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

该原则规定:

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

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

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

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

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

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


相关

  • 心脏心脏(英语:heart),常简称心,是一种在人类和其他动物都有的肌造器官,它的功用是推动循环系统中血管的血液。血液提供身体氧气以及养分,同时也协助身体移除代谢废弃物(英语:metabolic w
  • 罗马-菲乌米奇诺机场罗马-菲乌米奇诺“列奥那多·达芬奇”国际机场(意大利语:Aeroporto internazionale di Roma-Fiumicino "Leonardo da Vinci",IATA代码:FCO;ICAO代码:LIRF),是一座位于意大利拉齐奥大
  • 渤海渤海是中国的内海,也是西太平洋的一部分,渤海古称东海、北海。位于辽东半岛和胶东半岛之间,被辽宁省、河北省、天津市、山东省陆地环抱,仅东部以渤海海峡与黄海相通,南北长约556
  • 急就篇《急就章》又名《急就篇》,汉朝史游著。汉元帝时黄门令史游作《急就章》,全文共一千三百九十四字,无一重复字,为学童识字之书。“石敢当”的文字记载最早见于《急就章》:“师猛虎
  • 工学工程学、工程科学或工学,是通过研究与实践应用数学、自然科学、社会学等基础学科的知识,以达到改良各行业中现有材料、建筑、机械、仪器、系统、化学和加工步骤的设计和应用方
  • 萧泰然萧泰然(1938年1月1日- 2015年2月24日),台湾音乐家。出生于日治台湾高雄州凤山郡凤山街(今高雄市凤山区)。集钢琴家、指挥家、作曲家于一身。一生致力于台湾本土音乐融入西方音乐的
  • 五福符五福符,又称挂笺、挂千、挂签、挂钱、吊钱、喜钱、红钱、吊笺、喜笺、红笺、门吊、门花、门钱、门旗、花纸、彩飘、年彩、五福笺、门市彩、报春条、吊千儿、五福纸等。五福符
  • 马德堡半球马德堡半球(德语:Magdeburger Halbkugeln),亦作马格德堡半球,是一对铜质空心半球,被用于1654年由德国物理学家、时任马德堡市长奥托·冯·居里克于神圣罗马帝国的雷根斯堡(今德国雷
  • 美国城市广播网美国城市广播网(英语:American Urban Radio Networks)是美国一家主要服务于非裔美国人的广播联播网,旗下拥有超级精英(Elite Plus)、顶峰(Pinnacle)、文艺复兴(Renaissance)等频道。12
  • 富尔亨西奥·巴蒂斯塔鲁本·富尔亨西奥·巴蒂斯塔-萨尔迪瓦(Rubén Fulgencio Batista y Zaldívar;1901年1月16日-1973年8月6日),古巴军事领导人,1933年-1940年为古巴实际的军事领导人,1940年-1944年为古