设计模式七大原则——依赖倒转原则
1.什么是依赖倒转原则?
- 高层模块不应该依赖低层模块,二者都应该依赖其抽象。
- 抽象不应该依赖细节,细节应该依赖抽象。
- 依赖倒转 (倒置) 的中心思想是面向接口编程。
- 依赖倒转原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定的多。在Java中,抽象指的是接口或抽象类,细节就是具体的实现类。
- 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
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());}
}
我们可以根据依赖倒转原则对上面的代码做一个改进,如下:
设计模式七大原则——依赖倒转原则相关推荐
- Java设计原则——依赖倒转原则
我们一定要给自己提出这样的任务:第一,学习,第二是学习,第三还是学习. 学习从来无捷径,循序渐进登高峰. 目录 一.基本介绍 二.应用实例 1.示例一 2.示例二 三.依赖关系传递的三种方式 1.接口 ...
- 软件设计原则——依赖倒转原则
依赖倒转原则 高层模块不应该依赖低层模块,两者都应该依赖其抽象: 抽象不应该依赖细节,细节应该依赖抽象. 简单的说就是要求对抽象进行编程,不要对实现进行编程, 这样就降低了客户与实现模块间的耦合. [ ...
- 【设计模式】依赖倒转原则
依赖倒转原则 依赖倒转原则是指的特点有∶ 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置)的 中心思想 是面向接口编程 依赖倒转原则是基于这样的 ...
- java依赖倒转原则_设计原则之--依赖倒转原则
[各位博友晚上好,又到了晚上的这个时间,感谢大家一直对Darren博客的支持,希望这篇文章对你有所帮助: 这几天一直在看设计模式:简单工厂模式,策略模式,单一职责原则,开放 [依赖倒转原则又称依赖倒置 ...
- 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)
前言 1. 设计原则 1.1. 开-闭原则 1.2. 里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5. 合成/聚合原则 1.6. 迪米特法则 前言 学习设计模式之前先要了解其中的 ...
- 2016-12-28 迪米特法则+依赖倒转原则+里氏替换原则
依赖倒转原则 依赖倒转原则,也翻译成依赖倒置原则,抽象不应该依赖细节,细节应该依赖于抽象,要针对接口编程,而不是对实现编程.如电脑中无论主板.CPU.内存.硬盘都是针对接口设计的,PC电脑硬件的发展, ...
- 依赖倒转原则_Java设计模式的七大原则
Java设计模式的七大原则 里氏代换原则 里氏代换原则是对"开-闭"原则的补充.实现"开-闭"原则的关键步骤就是抽象化.而基类与子类的继承关系就是抽象化的具体实 ...
- 设计模式的七大设计原则:其三:依赖倒转原则
依赖倒转原则: 基本介绍: 依赖倒转原则(Dependence Inversion Principle)是指: 1.高层模块不应该依赖低层模块,二者都应该依赖其抽象 2.抽象不应该依赖细节,细节应该依 ...
- 【设计模式】七大原则之“依赖倒转原则”
一 基本介绍 依赖倒转原则(Dependence Inversion Principle)是指: 高层模块不应该依赖低层模块,二者都应该依赖其抽象 抽象不应该依赖细节,细节应该依赖抽象 依赖倒转(倒置 ...
最新文章
- HTML的标签描述15
- 关于MySQL的SLEEP(N)函数
- [云炬创业管理笔记]第四章把握创业机会测试5
- wxWidgets:wxChoicebook类用法
- java io 流选择题_java Io流面试题和选择题
- 找出没有出现的数 题解
- 【Elasticsearch】Elasticsearch 集群协调迎来新时代
- 安徽50岁计算机职称免考,50岁以上评职称免考外语
- android按钮对齐方式,表格行中三个按钮的对齐方式Android
- latex插入图像、表格、其他latex脚本时的路径设置
- 带你快速玩转canvas——写个折线图
- 运维自动化之5 - 基于LVS实现4层负载均衡应用
- Android:RGB颜色对照表
- 西门子1200PLC的OB块用法讲解
- 【DL BC】矩阵乘积操作简述
- 【Qt+OpenCV配置简介】
- Scrum敏捷开发模式介绍与实践
- 十、PWM脉宽调制信号的发生与控制
- 东鹏饮料如何站稳千亿市值?
- DeepLab系列理解
热门文章