天天看點

06設計模式-結構型模式-擴充卡模式

9.1 現實生活中的例子

泰國插座用的是兩孔的(歐标),可以買個多功能轉換插頭 (擴充卡) ,這樣就可以使用了。

06設計模式-結構型模式-擴充卡模式

9.2 基本介紹

擴充卡模式(Adapter Pattern)将某個類的接口轉換成用戶端期望的另一個接口表示,主的目的是相容性,讓原本因接口不比對不能一起工作的兩個類可以協同工作。其别名為包裝器(Wrapper)

擴充卡模式屬于結構型模式,主要分為三類:類擴充卡模式、對象擴充卡模式、接口擴充卡模式。

9.3 工作原理

(1) 擴充卡模式:将一個類的接口轉換成另一種接口,讓原本接口不相容的類可以相容

(2) 從使用者的角度看不到被适配者,是解耦的

(3) 使用者調用擴充卡轉化出來的目标接口方法,擴充卡再調用被适配者的相關接口方法

(4) 使用者收到回報結果,感覺隻是和目标接口互動,如圖

06設計模式-結構型模式-擴充卡模式

// 被适配類

package com.xusj.future.structural.adapter;

/**
 * @author xusj
 * <br>CreateDate 2022/7/26 23:22
 */
public class V220V {
    public int out220v() {
        return 220;
    }
}

           

// 目标适配接口

package com.xusj.future.structural.adapter;

/**
 * @author xusj
 * <br>CreateDate 2022/7/26 23:24
 */
public interface V5V {
    int translateM(int v);
}

           

// 擴充卡

package com.xusj.future.structural.adapter;

/**
 * @author xusj
 * <br>CreateDate 2022/7/26 23:24
 */
public class Adapter implements V5V {
    // 聚合被适配類
    private V220V v220V;

    // 構造方法
    public Adapter(V220V v220V) {
        this.v220V = v220V;
    }


    // 實作目标接口,進行适配
    @Override
    public int translateM(int v) {
        return v220V.out220v() / 2;
    }
}