23種設計模式之適配器模式

23種設計模式總篇::https://chenmingyu.top/categories/設計模式/java

適配器模式

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

定義:
把一個類的接口變換成客戶端所期待的另外一種接口,從而使本來接口不匹配而沒法一塊兒工做的兩個類可以在一塊兒工做github

在現有的系統中有新舊兩個接口,因爲新舊接口不兼容致使客戶端調用出現問題,可是現有系統還須要使用舊的接口,因此這個接口不能重構,可是爲了可以讓客戶端正常調用,咱們就須要將新的接口轉換成舊的接口,這種解決方式就是適配器模式設計模式

模式類圖

角色:ide

  1. 目標接口:Target,該角色把其餘類轉換爲咱們指望的接口
  2. 被適配類:Adaptee,被指望改變的接口
  3. 適配器:adapter,將被適配類Adaptee和目標接口Target接口組合到一塊兒
優勢
  1. 適配器模式可讓兩個沒有任何關係的類在一塊兒運行
  2. 增長了類的透明性和複用性
  3. 靈活性很是好

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

模式代碼實現

源碼地址:https://github.com/mingyuHub/design-patternsthis

目標接口

Target,咱們指望的接口模樣,供客戶端調用設計

/**
 * @author: chenmingyu
 * @date: 2019/2/18 18:38
 * @description: 目標接口
 */
public interface Target {

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

AdapteeadapterMethod方法是咱們指望被適配的方法code

/**
 * @author: chenmingyu
 * @date: 2019/2/18 19:20
 * @description: 被適配類
 */
public class Adaptee {

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

Adapter,將被適配類Adaptee和目標接口Target接口組合到一塊兒blog

/**
 * @author: chenmingyu
 * @date: 2019/2/18 19:20
 * @description: 適配器
 */
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

相關文章
相關標籤/搜索