適配器模式

適配器模式

將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

OO設(shè)計原則:

  • 面向接口編程
  • 封裝變化
  • 多用組合少用繼承
  • 對修改關(guān)閉,對擴(kuò)展開放
public class AdapterDemo {
    
    public static void main(String[] args) {
        PowerA powerA = new PowerAImplA();
        startA(powerA);
        
        
        PowerB powerB = new PowerBImpl();
        //startA(powerB); 報錯
        //由于 startA 的參數(shù)為 PowerA 類型,此時需要適配
        
        PowerAAdapter pAAdapter = new PowerAAdapter(powerB);
        startA(pAAdapter);
        
    }
    
    public static void startA(PowerA powerA){
        // ......
        powerA.insert();
        // ......
    }
    

    //與startA的內(nèi)容大部分重復(fù),故僅適用 startA() ,從而需要一個相應(yīng)的適配器,使得 PowerB 能使用 startA()
    public static void startB(PowerB powerB){
        // ......
        powerB.connect();
        // ......
    }
}


//適配器Adapter核心代碼
class PowerAAdapter implements PowerA{
    
    private PowerB powerB;// 要進(jìn)行適配的接口
    
    public PowerAAdapter(PowerB powerB) {
        this.powerB = powerB;
    }

    @Override
    public void insert() {
        powerB.connect();
    }
    
}

/**
 * 電源A接口
 */
interface PowerA{
    public void insert();
}

class PowerAImplA implements PowerA{

    @Override
    public void insert() {
        // TODO Auto-generated method stub
        System.out.println("電源A接口插入,開始工作。");
    }
    
}

/**
 * 電源B接口
 */
interface PowerB{
    public void connect();
}

class PowerBImpl implements PowerB{
    public void connect(){
        System.out.println("電源B接口已連接。");
    }
}

[圖片上傳失敗...(image-ad66b8-1539494589661)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容