分類: 軟體設計模式c++實現
2011-08-11 08:37
90人閱讀收藏
舉報 軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c++寫了個小例子,加深一下理解。主要參考《大話設計模式》和《設計模式:可復用物件導向軟體的基礎》(dp)兩本書。本文介紹介面卡模式的實現。
dp上的定義:介面卡模式將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作
。它包括類介面卡和物件介面卡,本文針對的是物件介面卡。舉個例子,在stl中就用到了介面卡模式。stl實現了一種資料結構,稱為雙端佇列(deque),支援前後兩段的插入與刪除。stl實現棧和佇列時,沒有從頭開始定義它們,而是直接使用雙端佇列實現的。這裡雙端佇列就扮演了介面卡的角色。佇列用到了它的後端插入,前端刪除。而棧用到了它的後端插入,後端刪除。假設棧和佇列都是一種順序容器,有兩種操作:壓入和彈出。
下面給出相應的uml圖,與dp上的圖差不多。
根據上面的uml圖,很容易給出實現。
view plain
copy to clipboard
//雙端佇列
class deque
; //順序容器
class sequence
; //棧
class stack: public sequence
void pop()
private:
deque deque; //雙端佇列
};
//佇列
class queue: public sequence
void pop()
private:
deque deque; //雙端佇列
};
view plain
//雙端佇列
class deque
; //順序容器
class sequence
; //棧
class stack: public sequence
void pop()
private:
deque deque; //雙端佇列
};
//佇列
class queue: public sequence
void pop()
private:
deque deque; //雙端佇列
};
使用方式如下:
view plain
copy to clipboard
int main()
view plain
int main()
設計模式C 實現(3) 介面卡模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...
設計模式C 實現(3) 介面卡模式
分類 設計模式 設計模式 c class umldelete 資料結構 軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每...
設計模式C 實現(3) 介面卡模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...