`
dongpo
  • 浏览: 5872 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

第11章 依赖倒置原则

 
阅读更多

1. 什么是DIP
Dependency Inversion Principle。


定义:高层不依赖于低层。两者依赖于抽象。抽象不依赖于细节,细节依赖于抽象。

 

2. 为什么要用DIP
    传统的设计,都是高层依赖于低层。低层的接口是由低层提供的,在提供接口时,低层作者只是站在自己的角度,怎样方便就怎样提供。这样的接口是跟具体实现密切相关的。如果低层实现发生了变化,就会引起接口的变化,进而引起高层的变化。

 

使用DIP,接口所有权属于高层。这样至少有两个好处:
(1) 在制定接口时,会站在高层(即用户)的角度考虑。接口是提供给用户使用的,只有用户才知道需要什么样的接口,所以站在用户的角度是合理的。
(2) 低层没有权利去修改接口,所以低层的实现发生变化时,不会引起高层的变化。

 

3. 怎样使用DIP
传统的设计是这样的:
 

 
使用DIP,需要做两件事情:
(1) 依赖于抽象:不要直接依赖于具体类,而是应该把接口抽象出来,依赖于这个抽象;
(2) 接口所有权倒置:接口所有权归高层。
运用DIP后:
 

 
4. 结论
站在用户的角度思考,依赖于抽象,这是敏捷设计经常强调的两点。DIP的依赖倒置,正是基于这两点的。

  • 大小: 7.7 KB
  • 大小: 10.5 KB
分享到:
评论

相关推荐

    敏捷软件开发:原则、模式与实践

    第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第III部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和...

    敏捷软件开发:原则、模式与实践.pdf

    第十一章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口...

    敏捷软件开发:原则、模式与实践.pdf 高清

    第十一章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口...

    敏捷软件开发:原则、模式与实践.pdf

    第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和MEDIATOR模式 ...

    敏捷软件开发.pdf

    第11章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第12章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 ...

    敏捷软件开发原则、模式与实践 C#版

    LISKOV替换原则 第11章 DIP:依赖倒置原则 第12章 ISP:接口隔离原则 第13章 写给C#程序员的UML概述 第14章 使用UML 第15章 状态图 第16章 对象图 第17章 用例 第18章 顺序图 第19章 类图 第20章 咖啡的启示 第三...

    24个设计模式与6大设计原则

    26.3 依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】 309 26.4 接口隔离原则【INTERFACE SEGREGATION PRINCIPLE】 310 26.5 迪米特法则【LOW OF DEMETER】 320 26.6 开闭原则【OPEN CLOSE PRINCIPLE】 ...

    动力节点老杜最新版Spring6框架教程学习资料分享

    第三点:依赖倒置原则DIP 第四点:CGLIB动态代理代码实现 第五点:代码演示事务传播行为 第六点:代码演示事务隔离级别 第七点:Bean的循环依赖 第八点:Spring的八大设计模式 第九点:17种注入方案,其他视频讲10种...

    java设计模式

    第3章 依赖倒置原则 3.1 依赖倒置原则的定义 3.2 言而无信,你太需要契约 3.3 依赖的三种写法 3.4 最佳实践 第4章 接口隔离原则 4.1 接口隔离原则的定义 4.2 美女何其多,观点各不同 4.3 保证接口的纯洁性 4.4 最佳...

    ASP.NET设计模式-杨明军译(源码)

    5.3.1 依赖倒置原则和依赖注入模式 5.3.2 接口分离原则 5.3.3 里氏替换原则 5.4 小结 第6章 服务层 6.1 服务层介绍 6.1.1 SOA 6.1.2 SOA的4项信条 6.1.3 Facade设计模式 6.2 应用Messaging模式 6.2.1 ...

    亮剑.NET深入体验与实战精要2

    13.6.6 依赖倒置原则(DIP) 486 13.6.7 接口分离原则(ISP) 489 13.6.8 面向对象设计时需要注意的 问题 490 本章常见技术面试题 491 本章小结 491 第14章 三层架构项目开发 493 14.1 什么是三层架构 494 14.1.1 ...

    亮剑.NET深入体验与实战精要3

    13.6.6 依赖倒置原则(DIP) 486 13.6.7 接口分离原则(ISP) 489 13.6.8 面向对象设计时需要注意的 问题 490 本章常见技术面试题 491 本章小结 491 第14章 三层架构项目开发 493 14.1 什么是三层架构 494 14.1.1 ...

    Python第一阶段笔记汇总.docx

    (三)依赖倒置(依赖抽象) 96 (四)组合复用原则(复用的最佳实践) 96 (五)里氏替换(扩展重写,继承后的重写,指导继承的设计) 96 (六)迪米特法则(用父类减少传递数据量,类与类交互的原则) 97 第三章 模块包+...

    JAVA面向对象详细资料

    6、依赖倒置,要依赖抽象,不要依赖具体类 54 36 练习:超市收银 54 37 练习:接口表示一种能力,也可以是一种规范 56 38 策略模式 57 38.1 动作冒险游戏 57 38.2 类图 57 38.3 编写使用武器行为接口和实现类 58 ...

    asp.net知识库

    深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白 asp.net 运行机制初探(httpModule加载) 利用反射来查看对象中的私有变量 关于反射中创建类型实例的两种方法 ASP.Net应用程序的多进程模型 NET委托...

    传智播客扫地僧视频讲义源码

    本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

Global site tag (gtag.js) - Google Analytics