依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。
简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
 
面向过程的开发
上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本。
面向对象的开发很好的解决了这个问题
一般情况下抽象的变化概率很小,让程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。
 
一个应用中的重要策略决定及业务模型正是在这些高层的模块中。也正是这些模型包含着应用的特性。
但是,当这些模块依赖于低层模块时,低层模块的修改将会直接影响到它们,迫使它们也去改变。
这种境况是荒谬的。应该是处于高层的模块去迫使那些低层的模块发生改变。应该是处于高层的模块优先于低层的模块。
无论如何高层的模块也不应依赖于低层的模块。
而且,我们想能够复用的是高层的模块。通过子程序库的形式,我们已经可以很好地复用低层的模块了。
当高层的模块依赖于低层的模块时,这些高层模块就很难在不同的环境中复用。
但是,当那些高层模块独立于低层模块时,它们就能很简单地被复用了。这正是位于框架设计的最核心之处的原则
 
依赖倒置原则
 
A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
B.抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
 

最新文章

  1. Unix 环境高级编程---线程创建、同步、
  2. C++学习之const整理总结
  3. 转:自建CDN防御DDoS(1, 2, 3)infoq
  4. MVVM学习
  5. linux平台的office文档转pdf(程序员的菜)
  6. 【IBM】Merlin 给 Java 平台带来了非阻塞 I/O
  7. sed删除空行和注释行
  8. 在 Inno Setup 中实现倒数N秒后激活按钮
  9. ContentType 属性 MIME
  10. 【秒懂】号称最为简明实用的Django上手教程(下)
  11. Lua函数以及闭合函数的理解
  12. java json字符串 获取value
  13. [数分提高]2014-2015-2第6教学周第1次课讲义 3.3 Taylor 公式
  14. 【JS】长轮询
  15. 【Axure RP8.1】一款专业的快速原型设计工具
  16. Kafka技术内幕 读书笔记之(五) 协调者——协调者处理请求
  17. Linux操作系统监控分析
  18. axios写法
  19. 第一次spring,第三天。
  20. ElasticSearch 通过nginx做HTTP验证

热门文章

  1. Html 使用技巧 -- 设置display属性可以使div隐藏后释放占用的页面空间
  2. 20165320 实验一 java环境的熟悉
  3. Dream------spark--spark集群的环境搭建
  4. 怎么看innodb的B+TREE层数?
  5. shell 指令分析nginx 日志qps
  6. 数据库-mysql数据连接
  7. java基础66 JavaScript中的事件、localtion对象、screen对象(网页知识)
  8. java基础19 导包和“命令行”打jar包
  9. lucene-利用内存中索引和多线程提高索引效率
  10. No.11 selenium学习之路之浏览器大小