1.什么是依赖倒转原则?

  1. 高层模块不应该依赖低层模块,二者都应该依赖其抽象。
  2. 抽象不应该依赖细节,细节应该依赖抽象。
  3. 依赖倒转 (倒置) 的中心思想是面向接口编程。
  4. 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在Java中,抽象指的是接口或抽象类,细节就是具体的实现类。
  5. 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。

2.代码案例

package com.szh.principle.inversion;/****/
class Email {public String getInfo() {return "电子邮件信息: hello,world";}
}// 完成Person接收消息的功能
// 方式1分析
//   1. 简单,比较容易想到
//   2. 如果我们获取的对象是 微信,短信等等,则新增类,同时Person也要增加相应的接收方法
//   3. 解决思路:引入一个抽象的接口IReceiver, 表示接收者, 这样Person类与接口IReceiver发生依赖
//   因为Email, WeiXin 等等属于接收的范围,他们各自实现IReceiver 接口就ok, 这样我们就符号依赖倒转原则
class Person {public void receive(Email email ) {System.out.println(email.getInfo());}
}public class DependencyInversion {public static void main(String[] args) {Person person = new Person();person.receive(new Email());}
}

我们可以根据依赖倒转原则对上面的代码做一个改进,如下:

设计模式七大原则——依赖倒转原则相关推荐

  1. Java设计原则——依赖倒转原则

    我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习. 学习从来无捷径,循序渐进登高峰. 目录 一.基本介绍 二.应用实例 1.示例一 2.示例二 三.依赖关系传递的三种方式 1.接口 ...

  2. 软件设计原则——依赖倒转原则

    依赖倒转原则 高层模块不应该依赖低层模块,两者都应该依赖其抽象: 抽象不应该依赖细节,细节应该依赖抽象. 简单的说就是要求对抽象进行编程,不要对实现进行编程, 这样就降低了客户与实现模块间的耦合. [ ...

  3. 【设计模式】依赖倒转原则

    依赖倒转原则 依赖倒转原则是指的特点有∶ 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置)的 中心思想 是面向接口编程 依赖倒转原则是基于这样的 ...

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

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

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

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

  6. 2016-12-28 迪米特法则+依赖倒转原则+里氏替换原则

    依赖倒转原则 依赖倒转原则,也翻译成依赖倒置原则,抽象不应该依赖细节,细节应该依赖于抽象,要针对接口编程,而不是对实现编程.如电脑中无论主板.CPU.内存.硬盘都是针对接口设计的,PC电脑硬件的发展, ...

  7. 依赖倒转原则_Java设计模式的七大原则

    Java设计模式的七大原则 里氏代换原则 里氏代换原则是对"开-闭"原则的补充.实现"开-闭"原则的关键步骤就是抽象化.而基类与子类的继承关系就是抽象化的具体实 ...

  8. 设计模式的七大设计原则:其三:依赖倒转原则

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

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

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

最新文章

  1. HTML的标签描述15
  2. 关于MySQL的SLEEP(N)函数
  3. [云炬创业管理笔记]第四章把握创业机会测试5
  4. wxWidgets:wxChoicebook类用法
  5. java io 流选择题_java Io流面试题和选择题
  6. 找出没有出现的数 题解
  7. 【Elasticsearch】Elasticsearch 集群协调迎来新时代
  8. 安徽50岁计算机职称免考,50岁以上评职称免考外语
  9. android按钮对齐方式,表格行中三个按钮的对齐方式Android
  10. latex插入图像、表格、其他latex脚本时的路径设置
  11. 带你快速玩转canvas——写个折线图
  12. 运维自动化之5 - 基于LVS实现4层负载均衡应用
  13. Android:RGB颜色对照表
  14. 西门子1200PLC的OB块用法讲解
  15. 【DL BC】矩阵乘积操作简述
  16. 【Qt+OpenCV配置简介】
  17. Scrum敏捷开发模式介绍与实践
  18. 十、PWM脉宽调制信号的发生与控制
  19. 东鹏饮料如何站稳千亿市值?
  20. DeepLab系列理解

热门文章

  1. html登陆注册功能实现,实现用户的登录注册功能
  2. python新打包工具,最好用的版本之一,不接受反驳
  3. @Controller注解的一些理解吧
  4. 联想小新i2000装win10教程(u盘装系统)
  5. 第0节为啥捣鼓Busybox-Vi
  6. 没有安全删除硬件的解决
  7. html svg图片不显示,html/css svg怎么显示不出来?
  8. 图像特征之傅里叶描述子
  9. AcWing 4246. 最短路径和(反向建图+链式前向星+堆优化)
  10. 网络服务——生成树技术STP的BPDU报文详解