設計模式:8適配器模式

適配器模式

適配器模式屬於結構型模式,又叫包裝模式

定義:把一個類的接口變換成客戶端所期待的另一種接口,從而使原本接口不匹配而無法一起工作的兩個類能夠在一起工作

在現有的系統中有新舊兩個接口,由於新舊接口不兼容導致客戶端調用出現問題,但是現有系統還需要使用舊的接口,所以這個接口不能重構,但是爲了能夠讓客戶端正常調用,我們就需要將新的接口轉換成舊的接口,這種解決方式就是適配器模式

模式類圖

在這裏插入圖片描述
角色

  1. 目標接口:Target,該角色把其他類轉換爲我們期望的接口
  2. 被適配類:Adaptee,被期望改變的接口
  3. 適配器:adapter,將被適配類Adaptee和目標接口Target接口組合到一起

優點

  1. 適配器模式可以讓兩個沒有任何關係的類在一起運行
  2. 增加了類的透明性和複用性
  3. 靈活性非常好

適配器模式是爲了在擴展應用的時候減少代碼時才使用的,所以最初設計系統時不要考慮使用適配器模式

模式代碼實現

目標接口
Target,我們期望的接口模樣,供客戶端調用

public interface Target {

    /**
     * 客戶端訪問的目標接口
     */
    void request();
}

被適配類
Adaptee的adapterMethod方法是我們期望被適配的方法

public class Adaptee {

    /**
     * 被適配的接口
     */
    public void adapterMethod(){
        System.out.println("我是要被適配的方法");
    };
}

適配器
Adapter,將被適配類Adaptee和目標接口Target接口組合到一起

public class Adapter implements Target {

    /**
     * 被適配類
     */
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request() {
        adaptee.adapterMethod();
    }
}

測試

public static void main(String[] args) {
    Adaptee adaptee = new Adaptee();
    Adapter adapter = new Adapter(adaptee);
    adapter.request();
}

輸出

我是要被適配的方法

參考:設計模式之禪:https://www.kancloud.cn/sstd521/design/193573

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章