設計模式之六 介面卡模式

2021-10-08 07:56:06 字數 1894 閱讀 8536

結構型模式

介面卡模式是將乙個類的介面轉換成使用者所期待的目標介面,使得原本因介面不匹配無法再一起工作的兩個類一起工作。

類介面卡模式,簡單來說,就是適配的類的api轉換成為目標介面的api。這種介面卡模式下,介面卡繼承自已實現的類(一般多重繼承)。

一句話描述:adapter類,通過繼承 adaptee類,實現 target類介面,完成adaptee-> target的適配。

從上圖可以看出,adaptee類並沒有sampleoperation2()方法,而客戶端則期待這個方法。

為了使客戶端能夠使用adaptee類,提供乙個中間環節,即類adapter,把adaptee類的api同target介面的api銜接起來。adapter與adaptee是繼承關係,這決定了這個介面卡模式是類的介面卡模式。

目標角色:

public

inte***ce

target

源角色:

public

class

adaptee

}

可以看出,目標角色的介面中宣告了兩個方法:sampleoperation1()和sampleoperation2(),而源角色adaptee是乙個具體類,它有乙個sampleoperation1()方法,但是沒有sampleoperation2()方法。

介面卡角色:

public

class

adapter

extends

adaptee

implements

target

}

介面卡角色adapter拓展了adaptee,同時又實現了目標角色target介面。由於adaptee沒有提供sampleoperation2()方法,而目標介面有要求這個方法,因此介面卡角色adapter實現了這個方法。

實體類:

public

class

entity

}

測試類:

public

class

test

}

介面卡角色修改:在物件的介面卡模式中,介面卡角色中持有乙個對源角色的引用,並在需要適配的方法中使用源角色的方法實現。

public

class

adapter

/** * 源類adaptee有方法sampleoperation1

* 因此介面卡可以直接進行委派

*/public

void

sampleoperation1()

/** * 源類adaptee沒有方法sampleoperation2

* 因此介面卡需要自己實現此方法

*/public

void

sampleoperation2()

}

類的介面卡模式物件的介面卡模式建議盡量使用物件介面卡的實現方式,多用合成/聚合,少用繼承。當然,具體問題還是需要具體分析,根據需要來選用實現方式,最適合的才是最好的。

物件介面卡優點

類介面卡缺點

一天乙個設計模式(五) - 介面卡模式(adapter)

介面卡模式

設計模式(六) 介面卡模式

優點 通過引入乙個介面卡adapter來重用現有的不相容的舊類adeptee,而無需修改舊類原有結構。增加了舊類的復用性 介面卡的靈活性和擴充套件性都非常好 缺點 一次最多只能適配乙個舊類,不能同時適配多個舊類。適用範圍 需要有舊類,而舊類的介面不符合新系統的需要,甚至舊類都沒有源 客戶端 play...

設計模式之介面卡模式(類介面卡模式)

介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...

C 設計模式之介面卡模式(六)

介面卡模式 adapter pattern 是一種結構型模型,會將一種介面轉換為另一種需要的介面,以便使用。介面卡模式有兩種,一是類模式介面卡 另一種是物件模式介面卡。類模式介面卡 物件模式介面卡 優點 1.遮蔽具體實現的方法,實現了依賴倒轉 2.把不方便使用的介面轉換為統一介面,方便使用。clas...