什麼是介面卡模式
將一個類的介面轉換為客戶端希望的另一個介面,使其原本由於不相容而不能一起工作的類能一起協同工作。
介面卡模式屬於結構型設計模式。
介面卡模式角色
目標介面
:客戶端希望的介面類,可以是抽象類或介面類。
適配者類
:需要轉換為目標介面的被適配類。
介面卡類
:透過繼承或依賴適配者類,把適配者介面轉換為目標介面,讓客戶端直接呼叫目標介面的方法訪問適配者。被適配者對客戶端來說是透明的。
介面卡模式UML圖
介面卡模式分類
類介面卡模式
物件介面卡模式
介面介面卡模式
類介面卡模式
介面卡類,透過繼承適配者介面,實現目標介面,完成適配者介面向目標介面的轉換。
類介面卡模式原始碼示例
需求:手機想要投影到投影儀上,由於手機是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圖及分類,並重點介紹了類介面卡的定義、原始碼示例及測試。
若本文使你受益,還請給予關注、點贊、轉發,歡迎拍磚!!!