依赖反转原则

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

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

该原则规定:

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

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

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

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

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

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


相关

  • V04A·B·C·D·G·H·QI·J·L·M·N·P·R·S·VATC代码V04(诊断用药)是解剖学治疗学及化学分类系统的一个药物分组,这是由世界卫生组织药物统计方法整合中心(The WHO Collaborat
  • 印第安战争法兰西王国 (1622–1763)英格兰 (1622–1707)大英帝国 (1622–1867)美国 (1783–1924)北美印第安战争(英语:American Indian Wars)是在美国和加拿大用来描述一系列的美国和加拿
  • 舌(舌头)是口腔底的肌肉,帮助咀嚼、吞咽、构音和感受味觉。舌能辨别酸、甜、苦、辣、咸、鲜味,舌表面的大部分粘膜上皮中含味蕾。因为舌是帮助发声的器官之一,在一些语言中,比如在
  • 竹北市竹北市(台湾话:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",Helvetica,Arial,sans-serif} Tik-p
  • 皇居坐标:35°41′05.11″N 139°45′08.85″E / 35.6847528°N 139.7524583°E / 35.6847528; 139.7524583皇居(日语:皇居/こうきょ Kōkyo */?)是指日本天皇居住的宫殿。现在的皇
  • 夏延县夏延县 (Cheyenne County, Colorado)是美国科罗拉多州东部的一个县,东邻堪萨斯州。面积4,614平方公里。根据美国2000年人口普查,共有人口2,231人。县治夏延韦尔斯 (Cheyenne W
  • 塞尺塞尺(又称:间隙量规、测隙规),是一种工具,用来测量间隙宽度。塞尺大多用在工程测量两部分之间的间隙。虽然他们没有锋利的边缘,有时被认为是刀片。 使用塞尺时必须注意下列几点:
  • 山额夫人桑格夫人(英语:Mrs. Sanger),全名:玛格丽特·希金斯·桑格(Margaret Higgins Sanger,1879年9月14日-1966年9月6日),出生名:玛格丽特·路易丝·希金斯(Margaret Louise Higgins),美国控制
  • 1998年国际足联世界杯预选赛 (南美洲区)1998年国际足联世界杯预选赛 (南美洲区)是决定南美洲球队参加1998年国际足联世界杯资格的赛事。其中巴西作为卫冕冠军自动晋级。1998年国际足联世界杯预选赛(南美洲区)由于巴
  • 埃氏扁鳉埃氏扁鳉,为辐鳍鱼纲鲤齿目鰕鳉亚目鰕鳉科的其中一种,为热带淡水鱼,被IUCN列为濒危堡育类动物,分布于非洲科特迪瓦阿比尚Ono与Hebe潟湖,体长可达5公分,栖息在底中层水域,生活习性不