介面卡模式

2021-09-07 10:29:58 字數 1764 閱讀 5650

定義

將乙個類的介面轉換為另乙個介面,以滿足特定場景的需要。

舉個栗子,比如三孔插頭通過乙個轉換頭轉換為兩孔插頭;比如通過轉接線將普通耳機介面轉換為蘋果方孔耳機介面等。

介面卡模式允許通常因為介面不相容而不能在一起工作的類相互配合完成工作。

介面卡模式類圖

可以看到介面卡模式包含以下角色:

介面卡模式分為類介面卡和物件介面卡兩種。以上類圖為物件介面卡類圖。

類介面卡

類介面卡的重點是通過繼承 adaptee類來構造乙個介面卡。

//目標介面

inte***ce

target

//普通目標類,只有普通方法

class

commontarget

implements

target

}//適配者類,擁有特殊方法

class

adaptee

}//介面卡類

class

adapter

extends

adaptee

implements

target

}//測試類

public

class

classadapter

}

物件介面卡

物件介面卡的重點是通過組合的方式,包含乙個adaptee類物件來構造乙個介面卡。

以普通圓孔耳機借助轉換頭轉換為蘋果手機可以使用的方孔耳機為例。

場景:想用蘋果手機聽歌,但是沒有方孔耳機,同學有乙個普通圓孔耳機,怎麼辦?通過介面卡模式生成乙個轉接頭就可以聽歌啦。來看**實現:

方孔耳機,即客戶所需介面target(squareear介面)

public

class

implements

squareear

}public

inte***ce

squareear

普通圓孔耳機,即適配者adaptee類
public

class

commonroundear

implements

roundear

}public

inte***ce

roundear

轉接頭,即 adapter 介面卡類(核心),持有adaptee類
public

class

earadapter

implements

squareear

@override

public

void

square()

}

蘋果手機,我需要方孔耳機才能聽歌!
public

class

public

static

void

listen

(squareear squareear)

}

可以看到,通過介面卡模式將 方孔耳機介面 和 圓孔耳機介面 這兩個原本不能相容的介面一起工作。這就是介面卡模式。

介面卡模式優缺點及應用場景優點

缺點 應用場景

介面卡模式(類介面卡 物件介面卡)

做個筆記 引用 public inte ce usb public inte ce psp public class usber implements usb 類介面卡 psp適用usb介面 public class usbadapter extends usber implements psp 物...

介面卡模式 預設介面卡,類介面卡,物件介面卡

模式思想 改變乙個類的對外介面 增加或減少 以滿足不同外部呼叫者的需求 角色成員 目標介面 target 客戶所期待的介面。目標可以是具體的或抽象的類,也可以是介面。需要適配的類 adaptee 需要適配的類或適配者類。介面卡 adapter 通過包裝乙個需要適配的物件,把原介面轉換成目標介面。適配...

設計模式 介面卡模式 類介面卡 物件介面卡

乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...