未来_我来
因为渴望改变,所以必须努力

一、什么是倒转?

传统的过程式设计倾向于使高层次的模块依赖于低层次的模块,抽象层依赖 于具体的层次。

 

二、什么是依赖倒转原则

  依赖倒转(Dependence Inversion Principle ):

    1.抽象不应该依赖于细节,细节应该依赖于抽 象。

    2.高层模块不依赖底层模块,两者都依赖抽象。

 

三、组装电脑

 

四、怎样做到依赖倒转

  1.工厂方法模式   

  2.模板方法模式

  3.迭代子模式

 

 主板  抽象类

1 /*
2  * 主板抽象类
3  */
4 public abstract class MainBoard {
5     public abstract void doSomething();
6 }

内存  抽象类

1 /*
2  * 内存的抽象类
3  */
4 public abstract class Memory {
5     public abstract void doSomething();
6 }

硬盘  抽象类

1 /*
2  * 硬盘的抽象类
3  */
4 public abstract class HardDisk {
5     public abstract void doSomething();
6 }

华硕主板

1 /*
2  * 华硕主板
3  */
4 public class HuaSuoMainBoard extends MainBoard{
5 
6     public void doSomething() {
7         System.out.println("this is huasuoMainBoard");
8     }
9 }

微星主板

1 //微星主板
2 public class WeiXingMainBoard extends MainBoard {
3 
4     public void doSomething() {
5         System.out.println("this is weixingMainBoard");
6     }
7 }

 

金士顿内存

1 //金士顿内存
2 public class JinShiDunMemory extends Memory {
3 
4     public void doSomething() {
5         System.out.println("this is jinshidunMemory");
6     }
7 }

金邦硬盘

1 //金邦硬盘
2 public class JinBangMemory extends Memory {
3 
4     public void doSomething() {
5         System.out.println("this is jinbangMemory");
6     }
7 }

西数硬盘

1 //西数硬盘
2 public class XiShuHardDisk extends HardDisk {
3 
4     public void doSomething() {
5         System.out.println("this is xishuHardDisk");
6     }
7 }

电脑

 1 /*
 2  * 电脑
 3  */
 4 public class Computer {
 5     private MainBoard mainBoard;
 6     private Memory memory;
 7     private HardDisk harddisk;
 8 
 9     public MainBoard getMainBoard() {
10         return mainBoard;
11     }
12 
13     public void setMainBoard(MainBoard mainBoard) {
14         this.mainBoard = mainBoard;
15     }
16 
17     public Memory getMemory() {
18         return memory;
19     }
20 
21     public void setMemory(Memory memory) {
22         this.memory = memory;
23     }
24 
25     public HardDisk getHarddisk() {
26         return harddisk;
27     }
28 
29     public void setHarddisk(HardDisk harddisk) {
30         this.harddisk = harddisk;
31     }
32 
33     public void display() {
34         mainBoard.doSomething();
35         memory.doSomething();
36         harddisk.doSomething();
37     }
38 }

测试

 1 public class MainClass {
 2     public static void main(String[] args) {
 3         Computer computer = new Computer();
 4         computer.setMainBoard(new HuaSuoMainBoard());
 5         computer.setMemory(new JinShiDunMemory());
 6         computer.setHarddisk(new XiJieHardDisk());
 7         
 8         computer.display();
 9         
10         System.out.println("-------------");
11         
12         computer.setMainBoard(new WeiXingMainBoard());
13         computer.display();
14     }
15 }

 

posted on 2018-05-14 21:17  未来_我来  阅读(324)  评论(0编辑  收藏  举报

2 3
4