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



原创粉丝点击