天天看點

擴充卡模式

1.概述

将一個類的接口轉換成客戶希望的另外一個接口。adapter模式使得原本由于接口不相容而不能一起工作的那些類可以在一起工作。

模式中的角色

  目标接口(target):客戶所期待的接口。目标可以是具體的或抽象的類,也可以是接口。

  需要适配的類(adaptee):需要适配的類或适配者類。

  擴充卡(adapter):通過包裝一個需要适配的對象,把原接口轉換成目标接口。  

擴充卡模式有2種,第一種是“面向類的擴充卡模式”,第二種是“面向對象的擴充卡模式”。

2.類的擴充卡

先說“面向類的擴充卡模式”。顧名思義,這類擴充卡模式就是主要用于,單一的為某個類而實作适配的這樣一種模式,為什麼說隻為某個類去實作,一會提到,我們先展示這種類适配模式的代碼實作。

好了,代碼看完然後要做一些說明了,之前遺留的一個問題,為什麼稱其為類适配模式呢?很顯然的,adapter類繼承了adaptee類,而在java這種單繼承的語言中也就意味着,他不可能再去繼承其他的類了,這樣也就是這個擴充卡隻為adaptee這一個類服務,是以稱其為類适配模式。

3.對象的擴充卡

說完類的适配模式,我們要開始說第2種對象的擴充卡模式了。對象擴充卡模式是把“源”作為一個對象聚合到擴充卡類中。同樣的話不多說,貼上代碼:

對象的擴充卡模式,把“源”作為一個構造參數傳入擴充卡,然後執行接口所要求的方法。這種适配模式可以為多個源進行适配,彌補了類适配模式的不足。

4.比較

1.類的适配模式用于單一源的适配,由于它的源的單一話,代碼實作不用寫選擇邏輯,很清晰;而對象的适配模式則可用于多源的适配,彌補了類适配模式的不足,使得原本用類适配模式需要寫很多擴充卡的情況不複存在,弱點是,由于源的數目可以較多,是以具體的實作條件選擇分支比較多,不太清晰。

2.擴充卡模式主要用于幾種情況:(1)系統需要使用現有的類,但現有的類不完全符合需要。(2)講彼此沒有太大關聯的類引進來一起完成某項工作(指對象适配)。