依赖反转原则

✍ dations ◷ 2025-11-06 21:40:45 #软件设计模式,软件设计,编程原则,面向对象的程序设计

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

该原则规定:

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

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

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

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

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

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


相关

  • 蒸气压第一:577.5 kJ·mol−1 第二:1816.7 kJ·mol−1 第三:2744.8 kJ·mol−1 (主条目:铝的同位素铝(Aluminum)是化学元素,属于硼族元素,化学符号是Al,原子序数是13,相对密度是2.7
  • 自雇人士自雇者,或称自雇人士,其工作的雇主就是自己。此类劳务提供者承担商业风险,不受劳动法律所保障,不能享受员工福利、有薪公众假期、工伤赔偿、退休金等,有些则加入行会。自雇者要申
  • 准确性准确度(英语:accuracy)与精密度(英语:precision)是科学、工程学、工业及统计学等范畴的重要概念。准确度是每一次独立的测量之间,其平均值与已知的数据真值之间的差距(与理论值相符
  • 多倍体细胞染色体倍性是指细胞内同源染色体的数目,只有一组最基本的称为“单套”或“单倍体”(haploid),两组备份称为“双套”或“二倍体”(diploid)。多倍体的细胞则有更多套的染色体。其中
  • 降雨降水是指在大气中冷凝的水汽以不同方式下降到地球表面的天气现象。大气中的水汽几乎全部集中于对流层中,温度越高,大气可以容纳的水汽含量就越多,反之就越少。一定温度下,当空气
  • 郝 芳郝芳(1964年5月-),男,内蒙古赤峰人,中国石油地质学家,中国科学院地学部院士,现任中国石油大学(华东)校长。郝芳出生于内蒙古赤峰市,1982年、1989年和1995年分别获得武汉地质学院矿产普
  • 费勒芒图费利曼图(Fremantle,简称“费利欧”Freo)为澳大利亚西澳的一个海港城市,位于府城伯斯西南方19千米(12英里),澳大利亚西海岸天鹅河入海口。1829年,成为天鹅河畔的第一个居民点。1929
  • 伦敦绍森德机场伦敦绍森德机场或绍森德机场(英语:London Southend Airport,IATA代码:SEN;ICAO代码:EGMC)是坐落于埃塞克斯羅奇福德区的国际机场,距离伦敦中心点约42英里(68千米)。1960年代起,绍森德一
  • 外百老汇音乐剧外百老汇音乐剧 (英文:Off-Broadway ) ,简称外百老汇,指的是美国纽约市演出规模较百老汇音乐剧小型的剧场演出,剧场座位介于100到499个之间。在曼哈顿更外围及更小型的剧场Off-
  • 六国六国可以指: