加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖倒置原则--DIP

发布时间:2020-12-14 05:52:39 所属栏目:百科 来源:网络整理
导读:一、DIP简介( DIP--Dependency Inversion?Principle ): 1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 2、抽象不应该依赖于细节,细节应该依赖于抽象。 ? 高层模块包含了一个应该程序中的重要的策略选择和业务模型,正是这些高层模块才使得其所
一、DIP简介(DIP--Dependency Inversion?Principle):
1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。
?
高层模块包含了一个应该程序中的重要的策略选择和业务模型,正是这些高层模块才使得其所有的应用程序区别于其他,如果高层依赖于低层,那么对低层模块的改动就会直接影响到高层模块,从而迫使它们依次做出改动。
?
二、举例说明:
反面例子:


缺点:耦合太紧密,Light发生变化将影响ToggleSwitch。
?
解决办法一:
将Light作成Abstract,然后具体类继承自Light。


优点:ToggleSwitch依赖于抽象类Light,具有更高的稳定性,而BulbLight与TubeLight继承自Light,可以根据"开放-封闭"原则进行扩展。只要Light不发生变化,BulbLight与TubeLight的变化就不会波及ToggleSwitch。
缺点:如果用ToggleSwitch控制一台电视就很困难了。总不能让TV继承自Light吧。
?
解决方法二:

优点:更为通用、更为稳定。
?
三、DIP优点:
使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
?
、启发式规则:
1、任何变量都不应该持有一个指向具体类的指针或者引用2、任何类都不应该从具体类派生(始于抽象,来自具体)3、任何方法都不应该覆写它的任何基类中的已经实现了的方法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读