设计模式的七大设计原则:其三:依赖倒转原则
依赖倒转原则:
基本介绍:
依赖倒转原则(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)继承时遵循里氏替换原则
设计模式的七大设计原则:其三:依赖倒转原则相关推荐
- java依赖倒转原则_设计原则之--依赖倒转原则
[各位博友晚上好,又到了晚上的这个时间,感谢大家一直对Darren博客的支持,希望这篇文章对你有所帮助: 这几天一直在看设计模式:简单工厂模式,策略模式,单一职责原则,开放 [依赖倒转原则又称依赖倒置 ...
- 面向对象编程原则(06)——依赖倒转原则
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 参考资料 <大话设计模式> 作者:程杰 <Java设计模式> 作者:刘 ...
- Java里氏转换_里氏代换原则、依赖倒转原则 | 学步园
里氏代换原则 面向对象设计的重要原则是创建抽象化,并且从抽象化导出具体化,具体化也就是给出不同的实现. 继承关系就是一种从抽象化到具体化的导出. 里氏代换原则:如果对每一个类型为T1的对象o1,都有类 ...
- Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)
1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...
- 【设计模式】七大原则之“依赖倒转原则”
一 基本介绍 依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置 ...
- Java学习 --- 设计模式七大原则的依赖倒转原则
目录 一.依赖倒转原则 二.依赖倒转原则参考代码 二.依赖倒转原则注意事项 一.依赖倒转原则 1.高层模块不应该依赖低层模块,二者都应该依赖其抽象. 2.抽象不应该依赖细节,细节应该依赖抽象. 3.依 ...
- 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)
前言 1. 设计原则 1.1. 开-闭原则 1.2. 里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5. 合成/聚合原则 1.6. 迪米特法则 前言 学习设计模式之前先要了解其中的 ...
- 设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则
(3)单一职责原则 单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因.例如,我们在写一个窗体应用程序,一般都会生成一个Form这样的类,于是我们就把各种各样的代码,像算法.数据库访问 ...
- 【设计模式系列学习笔记】5、依赖倒转原则和里氏代换原则
依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象: 针对接口编程,不要对实现编程: 高层模块不应该依赖底层模块,两个都应该依赖抽象: 抽象不应该依赖细节,细节应该依赖抽象: 里氏代换原则 一个软件 ...
- 设计模式——(四)设计模式原则___依赖倒转原则
一.介绍 依赖倒转原则是指: 1)高层模块不应该依赖低层模块,二者都应该依赖其抽象. 2)抽象不应该依赖细节,细节应该依赖抽象. 3)依赖倒转原则的中心思想是面向接口编程. 4)依赖倒转原则是基于这样 ...
最新文章
- linux+bin+写入引导区,CentOS 6.4 U盘启动盘制作、安装及遇到的问题解决
- 自己封装的一个java图片验证码
- WordPress.com 开源,弃 PHP 改用 JavaScript
- Div+CSS布局入门教程(一) 页面布局与规划
- 由浅入深CIL系列:4.抛砖引玉:使用CIL来分析string类型在.NET运算中的性能和避免装箱...
- [BZOJ 3207] 花神的嘲讽计划Ⅰ【Hash + 可持久化线段树】
- (1)数据库和MySql初步认识
- 前端学习/资源/工具网站
- 比较器与滞回比较器的原理及应用
- Jquery 中 ajaxSubmit使用笔记
- 第七版(谢希仁)计算机网络 知识点总结
- Email-FTP-RTSP协议实践研究
- Leetcode热门100之两数相加
- 时间换算--C语言结构练习
- 2021年国家统计局发布全国统计用区划代码和城乡划分代码
- 国风就是帅,会三板吗,看看新天吧
- mysql模糊查询语句怎么不区分大小写
- 如何将ipynb文件转换转换为py文件?
- 自动焊锡机加锡时的注意事项
- ground truth的含义