在設計模式中,介面卡模式(英語:adapter pattern)有時候也稱包裝樣式或者包裝。將乙個類的介面轉接成使用者所期待的。乙個適配使得因介面不相容而不能在一起工作的類工作在一起,做法是將類別自己的介面包裹在乙個已存在的類中。
有兩類介面卡模式:
·物件介面卡模式 - 在這種介面卡模式中,介面卡容納乙個它我包裹的類的例項。在這種情況下,介面卡呼叫被包裹物件的物理實體。
·類介面卡模式 - 這種介面卡模式下,介面卡繼承自已實現的類(一般多重繼承來實現)。
由於在這裡類介面卡我想不到什麼好一點的例子,就先說物件介面卡吧,大家都知道c++ stl中的棧和佇列吧?在標準庫中有乙個標準容器deque雙端佇列,他支援
前面刪除和插入,也支援後面刪除和插入,但是我們的queue是乙個前出後進的,而stack是乙個後進後出的,標準庫可並不去重新定義他們,而且是借助基容器實現的,預設的情況下用的deque 如果你想改變,也可以使用vector啊,只需要如下寫**:
stack > sta;
就可以了,下面讓我們來完全實現乙個介面卡stack:
template> //模版預設引數指定為deque
class stack
void pop()
type & top()
bool empty()
signed int size() };
int main()
{ stack> stack;
for(int i=1;i<10;i++)
stack.push(i);
while( !stack.empty() )
{ cout《不知道上面這個例子我有沒有扯遠,我個人比較喜歡stl,也研究過他的原始碼,最近也在想著模仿stl寫乙個自己的庫
回到正題,這個程式中的satck也就是標準庫中標準實現的棧,只是這裡我找不到以前寫的那個記憶體分配器,不然就可以完全模擬並改編了,該stack就叫做容器的介面卡,他以現成的介面,轉變為自己想要的介面,這就是介面卡模式,在標準庫中的迭代器介面卡,和函式物件介面卡都是採用這種模式,比如迭代器介面卡中的back_insert迭代器,就是借助了標準容器的push_back函式,一定要有這個函式的容器才可以用這個back_insert,相信也很好理解了,晚了,睡覺了!!
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式C 實現 介面卡模式
dp上的定義 介面卡模式將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作 它包括類介面卡和物件介面卡,本文針對的是物件介面卡。舉個例子,在stl中就用到了介面卡模式。stl實現了一種資料結構,稱為雙端佇列 deque 支援前後兩段的插入與刪除。st...
設計模式之介面卡模式 c
我們常用介面卡的作用是將220v交流電轉換為5a直流電,這樣就可以給手機充電了,如果在大美利堅旅行,那需要攜帶可以轉換110v交流電的介面卡 介面卡模式是最常用的模式之一,它的出現是為了讓使用者可以從不同的資料提供者處獲取自己想要的東西 常見的如在顯示 資料中間加入介面卡,這樣顯示部分的 可以無需考...