依赖反转原则

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

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

该原则规定:

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

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

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

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

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

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


相关

  • 舌病舌病是先天性或后天性的舌部疾病,种类很多。舌病很常见。例如,在美国,估计成人患病率为15.5%。舌病在戴假牙和吸烟的人群中更为常见。
  • 库尔特·勒温库尔特·勒温(Kurt Zadek Lewin,1890年9月9日-1947年2月12日)是一位德裔美国心理学家,他是现代社会心理学、组织心理学和应用心理学的创始人,常被称为“社会心理学之父”,最早研究
  • 惠普尔乔治·惠普尔(George Hoyt Whipple,1878年8月28日-1976年2月1日)是一位美国医学家。毕业于安多佛菲利普斯学院。由于发现了治疗贫血的“肝脏疗法”,而与乔治·迈诺特及威廉·莫菲
  • 螺旋藻属螺旋藻属(学名:Spirulina),是蓝藻纲的一个属。本属物种旧属颤藻目颤藻属,后来独立出来成为螺旋藻属,但仍属颤藻目; 2014年,螺旋藻属与Glaucospira(Lagerheim 1892)及Halospirulina(Nüb
  • 俄罗斯文学俄国文学(俄文:Русская литература)这一概念在广义上指所有俄语国家的文学,不仅包括俄罗斯,也包括前苏联诸加盟共和国的文学。在苏联解体后,这一概念的范围缩小,
  • 职业训练中心劳动部劳动力发展署(简称劳动部劳发署)是中华民国劳动部所属机关,负责中华民国就业服务、全国技术士技能检定与技术士证照业务、身心障碍者及特定对象就业训练、外籍劳工聘雇许
  • 80号州际公路80号州际公路(Interstate 80,简称I-80)是美国州际公路系统的一部分。西起加州旧金山,东连纽泽西州提内克。全长2,899.54英里(4,666.36千米),是整个系统第二长的。与林肯公路,以及历
  • 密歇根-休伦湖密歇根-休伦湖(英语:Lake Michigan–Huron),或称为休伦-密歇根湖(英语:Lake Huron–Michigan),是指北美洲五大湖中密歇根湖与休伦湖共同组成的水域,其间由5英里(合8千米)宽、20英寻(合37米
  • 印度裔西马 (马来西亚印度人(也称为马来西亚印度裔;马来语:Orang India Malaysia),是移居马来西亚的印度人的称呼。马来西亚印度裔大多是在英属马来亚时期从印度移居马来半岛,这可能是
  • 朱迪斯·里奇·哈里斯朱迪斯·里奇·哈里斯(英语:Judith Rich Harris,1938年2月10日-2018年12月29日),美国心理学家、作家。1995年曾获美国心理学会颁予优秀心理学作家之乔治·A·米勒奖(George A. Mill