1、介面卡模式(apater)將乙個類的介面轉換成客戶希望的另外乙個介面。adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。
2、介面卡模式主要解決什麼問題呢?
答:簡單地說,就是需要的東西就在面前,但卻不能使用,而短時間又無法改造它,於是我們就想辦法適配它。
3、系統的資料和行為都正確,但介面不符合時,我們應該考慮用介面卡,目的是使控制範圍之外的乙個原有物件與某個介面匹配。介面卡模式主要應用於希望復用一些現存的類,但是介面又與復用環境要求不一致的情況,比如需要對早期**復用一些功能等應用上很有實際價值。
uml圖如下:
根據上圖我們知道參與者有:
target
----定義client使用的與特定領域相關的介面。
client
----與符合target介面的物件協同。
adaptee
-----定義乙個已經存在的介面,這個介面需要適配。
adapter
----對adaptee的介面與target介面進行適配。
4、何時使用介面卡模式?
答:使用乙個已經存在的類,但如果它的介面,也就是它的方法和你的要求不相同時,就應該考慮用介面卡模式,這樣客戶**可以統一呼叫介面就行了,這樣應該可以更簡單,更直接,更緊湊。
注意:介面卡模式不是在一開始有不同的時候就使用它,而是在不容易修改的時候再使用。
5、c++**實現
c++ code 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include
using
namespace std;
/* target(這是客戶所期待的介面,
目標可以是具體的或抽象的類,也
可以是介面)**如下: */
class target
};
/* 需要適配的類,**如下: */
class adaptee
};
/* adapter(通過在內部包裝乙個adpatee物件,把源
介面轉換成目標介面)**如下: */
class adapter :
public target
};
/* 客戶端** */
int main()
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式之 介面卡模式
1,介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本因介面不匹配而無法一起工作的兩個類能夠在一起工作 2,介面卡模式有兩種 1 類的介面卡模式 介面卡類繼承源類 這樣介面卡類就繼承了源類有的方法 並實現目標介面,實現在源類中沒有而在介面中有的方法,從而實現介面卡類有目標介面的所有方...
設計模式之介面卡模式
介面卡模式定義 將乙個類的介面,轉換成客戶期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。簡單定義 封裝物件,並提供不同的介面。簡單例子 鴨子介面 package headfirst.adapter.ducks public inte ce duck 具體鴨子 package headfi...