依赖反转原则

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

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

该原则规定:

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

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

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

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

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

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


相关

  • 呋喃妥因呋喃妥因(英语:Nitrofurantoin)商品名称Macrobid,是一种用作治疗尿道感染的抗生素。对于肾脏感染(英语:Pyelonephritis)不具效用,须以口服方式服用。常见副作用包含恶心、食欲不振、
  • 鼠绦虫缩小膜壳绦虫(学名:Hymenolepis diminuta)是一种食源性(英语:Foodborne parasites)寄生虫, 属于绦虫纲圆叶目,可引致膜壳绦虫病(hymenolepiasis)。这种线虫以昆虫作中间宿主,最终会感
  • 让·努维尔让·努维尔(法语:Jean Nouvel,1945年8月12日-),生于法国阿基坦大区洛特-加龙省的菲梅勒,法国建筑师。他在巴黎法国国立巴黎高等美术学院学习。在他建筑师生涯中他获得了一系列有权
  • 杨 伟杨伟(1963年5月-),四川资中人,中华人民共和国航空设计师、中国科学院院士。杨伟中学时期学习优异。15岁参加初中毕业考试6门课,5门100、1门99,差1分总成绩满分。因此他在高一申请破
  • MgCsub6/subHsub6/subOsub7/sub柠檬酸镁是镁的柠檬酸盐,它通常以水合物的形式存在。它在水中的溶解度较差,带有苦味。它含有16.2 wt%的镁。九水合物含有12 wt%的镁。柠檬酸镁可用作生理盐水轻泻剂以及镁的营
  • 曲氟尿苷三氟胸苷(INN:trifluridine)(又称屈氟尿苷、曲氟尿苷、trifluorothymidine或TFT)是一种主要用于眼睛的反疱疹病毒科抗病毒药物。商品名称为Viroptic,原由葛兰素史克公司的前身Glax
  • 1944)富兰克林·德拉诺·罗斯福 民主党富兰克林·德拉诺·罗斯福 民主党1944年美国总统大选是第40届四年一次的总统选举。 它于1944年11月7日星期二举行。选举发生在第二次世界
  • 小引河小引河,是天津市南开区南开大学八里台校区内的一条河流,位于化学学院东侧,南北贯穿校园,连通津河。河上有桥梁数座。
  • 卡塔尔尔·亚诺什卡达尔·亚诺什(匈牙利语:Kádár János;1912年5月26日-1989年7月6日),原名齐尔毛奈克·亚诺什,是一位匈牙利政治家,自1956年到1988年一直是匈牙利社会主义工人党的第一书记,两度出
  • 初禅天初禅天,佛家认为是天界中色界天的第一个层次,为已经脱离欲念,达到初禅境界的天人所居住。此天远离欲界恶法,众生心生喜乐,故又称离生喜乐地。世界分为三界:欲界、色界、无色界。色