依赖倒转原则:

基本介绍:

依赖倒转原则(Dependence Inversion Principle)是指:

1.高层模块不应该依赖低层模块,二者都应该依赖其抽象

2.抽象不应该依赖细节,细节应该依赖抽象

3.依赖倒转(倒置)的中心思想是面向接口编程

4.依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在java中,抽象指的是接口或抽象类,细节就是具体的实现类

5.使用接口或抽象类的目的是制定好规范,而不设计任何具体的操作,把展现细节的任务交给他们的实现类去完成。

案例:

1.Person发送消息案例

package inversion;import com.sun.org.apache.bcel.internal.generic.NEW;public class DependenceInversion {public static void main(String[] args) {Person person = new Person();person.receive(new Email());}
}class Email{public String getInfo(){return "电子邮件信息: helloworld!";}
}/*** 作者 ZYL* 功能描述 : 完成Person接收消息的功能* 方式1 :完成* 1.简单,比较容易想到该方案* 2.如果我们获取的对象是微信、短信等等,则新增类,同时Person也要增加相应的接收方法* 3.解决思路,引入一个抽象的接口,IReceiver 表示接收者,这样Person类与接口发生依赖*      因为email,微信等都属于接收的范围,他们各自实现IReceiver就可以这样也就符合   依赖倒转原则* 日期 2019/7/18 0018 19:20* 参数 null* 返回值*/
class Person{public void receive(Email email){System.err.println(email.getInfo());}
}

分析:

1.简单,比较容易想到该方案
2.如果我们获取的对象是微信、短信等等,则新增类,同时Person也要增加相应的接收方法
3.解决思路,引入一个抽象的接口,IReceiver 表示接收者,这样Person类与接口发生依赖因为email,微信等都属于接收的范围,他们各自实现IReceiver就可以这样也就符合   依赖倒转原则

案例2:

package inversion;public class DependenceInversion2 {public static void main(String[] args) {Person2 person2 = new Person2();person2.receive(new Email2());person2.receive(new Weixin());}
}interface IReceiver{String getInfo();
}class Email2 implements IReceiver{@Overridepublic String getInfo(){return "电子邮件信息: helloworld!";}
}class Weixin  implements IReceiver{@Overridepublic String getInfo(){return "微信信息: i am wechat!";}
}

总结:

依赖倒转原则的注意事项和细节:

1)低层模块尽量都要有抽象类和接口,或者两者都有,程序稳定性更好

2)变量的声明类型尽量是抽象类和接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序扩展和优化

3)继承时遵循里氏替换原则

设计模式的七大设计原则:其三:依赖倒转原则相关推荐

  1. java依赖倒转原则_设计原则之--依赖倒转原则

    [各位博友晚上好,又到了晚上的这个时间,感谢大家一直对Darren博客的支持,希望这篇文章对你有所帮助: 这几天一直在看设计模式:简单工厂模式,策略模式,单一职责原则,开放 [依赖倒转原则又称依赖倒置 ...

  2. 面向对象编程原则(06)——依赖倒转原则

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...

  3. Java里氏转换_里氏代换原则、依赖倒转原则 | 学步园

    里氏代换原则 面向对象设计的重要原则是创建抽象化,并且从抽象化导出具体化,具体化也就是给出不同的实现. 继承关系就是一种从抽象化到具体化的导出. 里氏代换原则:如果对每一个类型为T1的对象o1,都有类 ...

  4. Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)

    1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...

  5. 【设计模式】七大原则之“依赖倒转原则”

    一 基本介绍 依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置 ...

  6. Java学习 --- 设计模式七大原则的依赖倒转原则

    目录 一.依赖倒转原则 二.依赖倒转原则参考代码 二.依赖倒转原则注意事项 一.依赖倒转原则 1.高层模块不应该依赖低层模块,二者都应该依赖其抽象. 2.抽象不应该依赖细节,细节应该依赖抽象. 3.依 ...

  7. 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)

    前言 1. 设计原则 1.1. 开-闭原则 1.2. 里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5. 合成/聚合原则 1.6. 迪米特法则 前言 学习设计模式之前先要了解其中的 ...

  8. 设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则

    (3)单一职责原则 单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因.例如,我们在写一个窗体应用程序,一般都会生成一个Form这样的类,于是我们就把各种各样的代码,像算法.数据库访问 ...

  9. 【设计模式系列学习笔记】5、依赖倒转原则和里氏代换原则

    依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象: 针对接口编程,不要对实现编程: 高层模块不应该依赖底层模块,两个都应该依赖抽象: 抽象不应该依赖细节,细节应该依赖抽象: 里氏代换原则 一个软件 ...

  10. 设计模式——(四)设计模式原则___依赖倒转原则

    一.介绍 依赖倒转原则是指: 1)高层模块不应该依赖低层模块,二者都应该依赖其抽象. 2)抽象不应该依赖细节,细节应该依赖抽象. 3)依赖倒转原则的中心思想是面向接口编程. 4)依赖倒转原则是基于这样 ...

最新文章

  1. linux+bin+写入引导区,CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决
  2. 自己封装的一个java图片验证码
  3. WordPress.com 开源,弃 PHP 改用 JavaScript
  4. Div+CSS布局入门教程(一) 页面布局与规划
  5. 由浅入深CIL系列:4.抛砖引玉:使用CIL来分析string类型在.NET运算中的性能和避免装箱...
  6. [BZOJ 3207] 花神的嘲讽计划Ⅰ【Hash + 可持久化线段树】
  7. (1)数据库和MySql初步认识
  8. 前端学习/资源/工具网站
  9. 比较器与滞回比较器的原理及应用
  10. Jquery 中 ajaxSubmit使用笔记
  11. 第七版(谢希仁)计算机网络 知识点总结
  12. Email-FTP-RTSP协议实践研究
  13. Leetcode热门100之两数相加
  14. 时间换算--C语言结构练习
  15. 2021年国家统计局发布全国统计用区划代码和城乡划分代码
  16. 国风就是帅,会三板吗,看看新天吧
  17. mysql模糊查询语句怎么不区分大小写
  18. 如何将ipynb文件转换转换为py文件?
  19. 自动焊锡机加锡时的注意事项
  20. ground truth的含义

热门文章

  1. 高并发分布式系统中生成全局唯一Id汇总
  2. MyBatis学习总结(7)——Mybatis缓存
  3. python中的字典和类的区别_Python:我应该使用类还是字典?
  4. PKI/CA与数字证书
  5. 媒体查询Media Queries详解
  6. 使用lua实现nginx rewrite
  7. H3C防火墙出厂空配置管理口无法WEB登录
  8. 在Linux中使用matplotlib进行科学画图
  9. 面向对象编程引入“人狗大战”小游戏
  10. Go 在 TiDB 的实践