適配器模式(Adapter)


前言

設計模式系列代碼均持續(xù)更新在我的gitHub:to github


I. 適配器模式工作原理

  • 將一個類的接口轉換成另一種接口,讓原本接口不相兼容的類可以兼容(例如生活中的USB轉外接屏幕的轉接器 - USB 轉 HDMI等 )
  • 從用戶的角度來看,被適配類是看不見的,是解耦合的
  • 用戶調用適配器轉換出來的接口方法,由適配器去調用被適配者的相應接口方法


II. 適配器模式分類

  • 類適配器
  • 對象適配器
  • 接口適配器


III. 類適配器模式的類圖

類圖


IV. 類適配器模式代碼

完整代碼 github

  • 部分代碼
public class Adapter extends Laptop implements TransferLine {

    public Adapter() {
        provideHDMI();
    }

    public String provideHDMI() {
        setPort("HDMI");

        return getPort();
    }
}


V. 對象適配器模式

  • 對象適配器模式相對于類適配器模式就是將繼承關系轉為組合關系, 更為符合 合成復用原則
public class Adapter implements TransferLine {

    private Laptop laptop;

    public Adapter(Laptop laptop) {
        this.laptop = laptop;
    }

    public String provideHDMI() {
        if (laptop != null) {
            laptop.setPort("HDMI");
        }

        return laptop.getPort();
    }
}


VI. 接口適配器模式

  • 當我們僅需要使用某個接口中的某一個方法時,可以使用接口適配器模式
public interface AdapterInterface {
    void fun1();
    void fun2();
    void fun3();
    void fun4();
}
/* 以默認方式實現接口所有方法 */
public abstract class AbstractAdapter implements AdapterInterface {
    public void fun1() {}
    public void fun2() {}
    public void fun3() {}
    public void fun4() {}
}
/*  不想實現所有接口時,只需實現我們想要的方法就好 */
public class Client {
    public static void main(String[] args) {
        new AbstractAdapter(){
            @Override
            public void fun1() {
                System.out.println("=== 接口適配器 ===");
            }
        };
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容