Java设计模式之二十九(依赖倒转原则)
来源:互联网 发布:网络短信诈骗的论文 编辑:程序博客网 时间:2024/06/07 14:15
一、什么是倒转?
二、什么是依赖倒转原则
依赖倒转(Dependence Inversion Principle ):
1.抽象不应该依赖于细节,细节应该依赖于抽象。
2.高层模块不依赖底层模块,两者都依赖抽象。
三、组装电脑
四、怎样做到依赖倒转
1.工厂方法模式
2.模板方法模式
3.迭代子模式
代码实现:
电脑:
/* * 电脑 */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 abstract class MainBoard {public abstract void doSomething();}
硬盘:
/* * 硬盘的抽象类 */public abstract class HardDisk {public abstract void doSomething();}
内存:
/* * 内存的抽象类 */public abstract class Memory {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 XiJieHardDisk extends HardDisk {public void doSomething() {System.out.println("this is xijieHardDisk");}}
public class XiShuHardDisk extends HardDisk {public void doSomething() {System.out.println("this is xishuHardDisk");}}
内存实现:
public class JinBangMemory extends Memory {public void doSomething() {System.out.println("this is jinbangMemory");}}
public class JinShiDunMemory extends Memory {public void doSomething() {System.out.println("this is jinshidunMemory");}}
测试类:
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();}}
测试结果:
this is huasuoMainBoardthis is jinshidunMemorythis is xijieHardDisk-------------this is weixingMainBoardthis is jinshidunMemorythis is xijieHardDisk
- Java设计模式之二十九(依赖倒转原则)
- 【设计模式】六大原则之二(依赖倒转原则与里氏代换原则)
- 《大话设计模式之依赖倒转原则》
- 设计模式之依赖倒转原则学习
- 设计模式之依赖倒转原则
- android设计模式之依赖倒转原则
- 大话设计模式之依赖倒转原则
- 设计模式之依赖倒转原则
- 设计模式之依赖倒转原则
- 设计模式之依赖倒转原则
- 设计模式之依赖倒转原则
- JAVA设计模式-依赖倒转原则
- java设计模式_依赖倒转原则
- 设计模式六大设计原则之三:依赖倒转原则
- 设计模式-依赖倒转原则
- 设计模式-依赖倒转原则
- 设计模式--依赖倒转原则
- 【设计模式】依赖倒转原则
- Weka开发[14]-AdaBoost源代码介绍
- 推荐系统学习
- getsockopt()和setsockopt()函数详解
- 使用BO JAVA SDK打开WEBI报表,并进行PDF、EXCEL、CSV、HTML导出
- Tor源码分析五 -- 客户端执行流程(libevent调度)
- Java设计模式之二十九(依赖倒转原则)
- 在使用mongoDB 中Group时,分组字段不是唯一索引记录数不能大于2000
- 我我我
- Windows 7/8建立临时无线网络/分享CMCC无线网络给多个无线设备
- 【JackSon Json】 入门1
- Weka开发[15]-ZeroR源代码介绍(入门篇)
- 关于在UIwebView中访问HTTPS站点的几种方法
- linux下压力测试软件siege的安装与使用详解
- 使用多线程的利弊