4依赖倒转原则DIP
一、什么是倒转?
传统的过程式设计倾向于使高层次的模块依赖于低层次的模块,抽象层依赖 于具体的层次。
二、什么是依赖倒转原则
依赖倒转(Dependence Inversion Principle ):
1.抽象不应该依赖于细节,细节应该依赖于抽 象。
2.高层模块不依赖底层模块,两者都依赖抽象。
三、组装电脑
四、怎样做到依赖倒转
1.工厂方法模式
2.模板方法模式
3.迭代子模式
主板 抽象类
- /*
- * 主板抽象类
- */
- public abstract class MainBoard {
- public abstract void doSomething();
- }
内存 抽象类
- /*
- * 内存的抽象类
- */
- public abstract class Memory {
- public abstract void doSomething();
- }
硬盘 抽象类
- /*
- * 硬盘的抽象类
- */
- public abstract class HardDisk {
- public abstract void doSomething();
- }
华硕主板
- /*
- * 华硕主板
- */
- public class HuaSuoMainBoard extends MainBoard{
- public void doSomething() {
- System.out.println("this is huasuoMainBoard");
- }
- }
微星主板
- //微星主板
- public class WeiXingMainBoard extends MainBoard {
- public void doSomething() {
- System.out.println("this is weixingMainBoard");
- }
- }
金士顿内存
- //金士顿内存
- public class JinShiDunMemory extends Memory {
- public void doSomething() {
- System.out.println("this is jinshidunMemory");
- }
- }
金邦硬盘
- //金邦硬盘
- public class JinBangMemory extends Memory {
- public void doSomething() {
- System.out.println("this is jinbangMemory");
- }
- }
西数硬盘
- //西数硬盘
- public class XiShuHardDisk extends HardDisk {
- public void doSomething() {
- System.out.println("this is xishuHardDisk");
- }
- }
电脑
- /*
- * 电脑
- */
- public class Computer {
- private MainBoard mainBoard;
- private Memory memory;
- private HardDisk harddisk;
- public MainBoard getMainBoard() {
- return mainBoard;
- }
- public void setMainBoard(MainBoard mainBoard) {
- this.mainBoard = mainBoard;
- }
- public Memory getMemory() {
- return memory;
- }
- public void setMemory(Memory memory) {
- this.memory = memory;
- }
- public HardDisk getHarddisk() {
- return harddisk;
- }
- public void setHarddisk(HardDisk harddisk) {
- this.harddisk = harddisk;
- }
- public void display() {
- mainBoard.doSomething();
- memory.doSomething();
- harddisk.doSomething();
- }
- }
测试
- public class MainClass {
- public static void main(String[] args) {
- Computer computer = new Computer();
- computer.setMainBoard(new HuaSuoMainBoard());
- computer.setMemory(new JinShiDunMemory());
- computer.setHarddisk(new XiJieHardDisk());
- computer.display();
- System.out.println("-------------");
- computer.setMainBoard(new WeiXingMainBoard());
- computer.display();
- }
- }
4依赖倒转原则DIP的更多相关文章
- 设计模式之依赖倒转原则(DIP)
1.概念 DIP:Dependency Inversion Principle 抽象不应当依赖于细节,细节应当依赖于抽象(说通俗点也就是要针对接口编程,不要针对实现编程:或者要依赖于抽象,不要依赖于具 ...
- 设计模式原则(3)--Dependency Inversion Principle(DIP)--依赖倒转原则
1.定义: 高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 抽象不应该依赖于细节,细节应当依赖于抽象.换言之,要针对接口编程,而不是针对实现编程. 2.使用场 ...
- JAVA设计模式之依赖倒转原则
3.1 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是 ...
- C#软件设计——小话设计模式原则之:依赖倒置原则DIP
前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...
- 开放-封闭原则(OCP)开-闭原则 和 依赖倒转原则,单一职责原则
单一职责原则 1.单一职责原则(SRP),就一个类而言,应该仅有一个引起它变化的原因 2.如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或抑制这个类完成其他职责的能力. ...
- 7.12 其他面向对象设计原则3: 依赖倒置原则DIP
其他面向对象设计原则3: 依赖倒置原则DIP The Dependency Inversion Principle7.1 依赖倒置原则DIP The Dependency Inversion Pr ...
- [Python设计模式] 第3~5章 单一职责原则/开放-封闭原则/依赖倒转原则
github地址:https://github.com/cheesezh/python_design_patterns 单一职责原则 就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责 ...
- IOS设计模式的六大设计原则之依赖倒置原则(DIP,Dependence Inversion Principle)
定义 高层模块不应该依赖于低层模块,二者都应该依赖于抽象:抽象不应该依赖细节:细节应该依赖抽象. 定义解读 依赖倒置原则在程序编码中经常运用,其核心思想就是面向接口编程,高层模块不应该依赖低层模块(原 ...
- 《大话设计模式》num03-04-05---单一职责原则、开放封闭原则、依赖倒转原则
2018年03月03日 21:19:19 独行侠的守望 阅读数个人分类: 设计模式 版权声明:本文为博主原创文章,转载请注明文章链接. https://blog.csdn.net/xiaoanzi12 ...
随机推荐
- c# 后台绑定treeview 多个tab
<wijmo:C1Tabs ID="C1Tab1" runat="server" ><%--OnSelectedChanged="& ...
- 3_主流部署方式介绍-Django+gunicorn+nginx
下载python wgethttps://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz 报错 Cannot find a valid baseurl ...
- 本地文件上传GitHub
(1)mkdir 项目名称(2)cd 项目名称(3)git init 把它变成可管理的Git仓库(4)git status 查看状态(5)git add . 点用空格隔开(6)git status ...
- 11 week blog
Obtaining the JSON: 1.首先,我们将把要检索的JSON的URL存储在变量中. 2.要创建请求,我们需要使用new关键字从XMLHttpRequest构造函数创建一个新的请求对象实例 ...
- Linux学习-实验楼(1)
1.Shell:命令解释器 2.Linux技能树 3.X11:X窗口系统,其本身只是工具包及架构协议,Xorg是x架构规范的一个实现体,是实现了x协议规范的一个提供图形界面的服务器 4.终端本质上是对 ...
- redis查看状态信息
redis查看状态信息 info all|default Info 指定项 server服务器信息 redis_version : Redis 服务器版本 redis_git_sha1 : Git S ...
- shell编程学习笔记(七):Shell中将指定内容输出到文件中
我们这里把echo要打印的内容输出到文件中 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts # vim script06.sh 开始编写script ...
- Android之Wifi学习(1)
在Android中对Wifi操作,android本身提供了一些实用的包.在android.net.wifi包以下.简介一下: 大致能够分为四个基本的类ScanResult,wifiConfigurat ...
- git远程删除分支后,本地git branch -a 依然能看到的解决办法
http://blog.csdn.net/qq_16885135/article/details/52777871 使用 git branch -a 命令可以查http://blog.csdn.net ...
- 修改openssh显示版本号
问题描述: 漏洞安全对使用的软件扫描漏洞,都是依据软件的版本号探测的,直接升级软件风险太大,因此规避风险,修改软件版本号实现其目的! 问题解决: strings xxx |grep xxx //实 ...