博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
依赖倒置原则(DIP)
阅读量:5164 次
发布时间:2019-06-13

本文共 1005 字,大约阅读时间需要 3 分钟。

依赖倒置(Dependence Inversion Principle)原则讲的是:要依赖于抽象,不要依赖于具体

简单的说,依赖倒置原则要求客户端依赖于抽象耦合。

抽象不应当依赖于细节;细节应当依赖于抽象

要针对接口编程,不针对实现编程。

 

举例说明:

 

反面例子:

 

缺点:

耦合太紧密,Light发生变化将影响ToggleSwitch

 

解决办法一:

将Light作成Abstract,然后具体类继承自Light。

 

 

 

优点:

ToggleSwitch依赖于抽象类Light,具有更高的稳定性,而BulbLight与TubeLight继承自Light,可以根据"开放-封闭"原则进行扩展。只要Light不发生变化,BulbLight与TubeLight的变化就不会波及ToggleSwitch。

 

缺点:

如果用ToggleSwitch控制一台电视就很困难了。总不能让TV继承自Light吧。

 

解决方法二:
 

 

 

 
优点:

更为通用、更为稳定。

 

 

启发式规则:
1、任何变量都不应该持有一个指向具体类的指针或者引用

2、任何类都不应该从具体类派生(始于抽象,来自具体)

3、任何方法都不应该覆写它的任何基类中的已经实现了的方法

 
如何抽象:
抽象反映高层策略,就是应用中那些不会随着具体细节的改变而改变的规则,常用的词语就是隐喻(metaphore).仔细分析需求,先找出那些业务规则,然后把它们抽象出来形成你的接口。层次化你的设计,常见的方式就是划分出显示层,业务层,持久层,再在每层做抽象。这是最粗糙的层次化,你可以在每层再根据需要划分更细的层次。在实现的时候始终遵循前面提到的原则:只依赖于接口。谁也无法在开始就做到最好,因此要不断迭代,精化设计。
使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。

 

 

结论:
使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
 

 

 

posted on
2012-03-11 20:59 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/guanjie20/archive/2012/03/11/2394472.html

你可能感兴趣的文章
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>