1、什麼是倒轉?測試
傳統的過程式設計傾向於使高層次的模塊依賴於低層次的模塊,抽象層依賴 於具體的層次。this
2、什麼是依賴倒轉原則spa
依賴倒轉(Dependence Inversion Principle ):設計
1.抽象不該該依賴於細節,細節應該依賴於抽 象。code
2.高層模塊不依賴底層模塊,二者都依賴抽象。blog
3、組裝電腦ip
4、怎樣作到依賴倒轉內存
1.工廠方法模式 ci
2.模板方法模式get
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 }