設計模式之類介面卡模式,So Easy

設計模式之類介面卡模式,So Easy

什麼是介面卡模式

將一個類的介面轉換為客戶端希望的另一個介面,使其原本由於不相容而不能一起工作的類能一起協同工作。

介面卡模式屬於結構型設計模式。

介面卡模式角色

目標介面

:客戶端希望的介面類,可以是抽象類或介面類。

適配者類

:需要轉換為目標介面的被適配類。

介面卡類

:透過繼承或依賴適配者類,把適配者介面轉換為目標介面,讓客戶端直接呼叫目標介面的方法訪問適配者。被適配者對客戶端來說是透明的。

介面卡模式UML圖

設計模式之類介面卡模式,So Easy

介面卡模式分類

類介面卡模式

物件介面卡模式

介面介面卡模式

類介面卡模式

介面卡類,透過繼承適配者介面,實現目標介面,完成適配者介面向目標介面的轉換。

類介面卡模式原始碼示例

需求:手機想要投影到投影儀上,由於手機是Type-c介面,投影儀是VGA介面。 不能直接投影,需要一個介面卡,將影片訊號從Type-c口轉到VGA口,最後才能輸出到大螢幕上。

/**  * 適配者類  *  * 手機想要投影到投影儀上,由於手機是Type-c介面,投影儀是VGA介面。  * 不能直接投影,需要一個介面卡,將影片訊號從Type-c口轉到VGA口,最後才能輸出到大螢幕上。  */ public class Phone {    public void typec(){        System。out。println(“手機輸出type-c介面。。。”);    } }

/**  *目標介面  */ public interface VGA {     void vgaInterface(); }

/**  * 介面卡類,將手機號的type-c介面轉換為投影儀的VGA介面  */ public class VGAAdapter extends Phone implements VGA {     public void vgaInterface() {         super。typec();         System。out。println(“已得到type-c介面資訊”);         System。out。println(“已將type-c介面資訊轉換為vga介面資訊。。。。”);    } }

類介面卡模式客戶端測試

/**  * 客戶端測試類  */ public class Client {    public static void main(String[] args) {        VGA vga = new VGAAdapter();        vga。vgaInterface();    } }

控制檯輸入日誌

手機輸出type-c介面。。。 已得到type-c介面資訊 已將type-c介面資訊轉換為vga介面資訊。。。。  Process finished with exit code 0

本章小結

本章節主要分享了介面卡模式定義、角色、UML圖及分類,並重點介紹了類介面卡的定義、原始碼示例及測試。

若本文使你受益,還請給予關注、點贊、轉發,歡迎拍磚!!!