依賴倒轉原則
阿新 • • 發佈:2020-06-27
依賴倒轉原則:通俗點就是,一個類和其他的類建立關係的時候,儘可能的與它們的父類建立關係,避免與子類建立聯絡。在設計變數時,能用父類儘量用父類。
下面是一道經典例題,我們通過抽象出燈泡類即紅燈黃燈各種燈的父類,來讓它與檯燈建立聯絡,這樣,即使更換燈泡也不用再修改檯燈類的程式碼,並且我們
將發光方法抽象出來,讓他的子類各種燈泡去實現他的發光方法。
定義一個檯燈類,裡面有一個開燈方法。
定義一個燈泡類,該類為抽象類,定義發光的方法,它有兩 個子類,紅燈泡和黃燈泡。
定義一個Test類,寫上主函式創建臺燈物件呼叫開燈方法, 實現傳入紅燈泡打印發紅光,傳入黃燈泡打印發黃光。
public classTestLight{//測試類 public static void main(String[] args) { Bulb redbulb = new RedBulb();//建立一個紅燈泡物件 Bulb yellowbulb = new YellowBulb();//建立一個黃燈泡物件 Light light = new Light();//建立一個檯燈物件 light.setLight(redbulb);//將紅燈泡放進檯燈裡面 light.bulbPower();//打開臺燈開關 light.setLight(yellowbulb);//將黃燈泡放進檯燈裡面 light.bulbPower();//打開臺燈開關 } } class Light{//檯燈 private Bulb bulb;//燈泡屬性 public Light(){}//構造方法 public Bulb setLight(Bulb bulb){//修改燈泡的方法 this.bulb = bulb; return bulb; } public void bulbPower(){//檯燈開燈方法 bulb.shine();//呼叫燈泡發光 } } abstractclass Bulb{//燈泡抽象類 public abstract void shine();//抽象發光方法 } class RedBulb extends Bulb{//紅燈泡繼承燈泡類 public void shine(){//實現燈泡發光方法 System.out.println("紅燈發紅光"); } } class YellowBulb extends Bulb{ public void shine(){ System.out.println("黃燈發黃光"); } }