设计模式C++实现(6)——适配器模式
?軟件領(lǐng)域中的設(shè)計(jì)模式為開(kāi)發(fā)人員提供了一種使用專家設(shè)計(jì)經(jīng)驗(yàn)的有效途徑。設(shè)計(jì)模式中運(yùn)用了面向?qū)ο缶幊陶Z(yǔ)言的重要特性:封裝、繼承、多態(tài),真正領(lǐng)悟設(shè)計(jì)模式的精髓是可能一個(gè)漫長(zhǎng)的過(guò)程,需要大量實(shí)踐經(jīng)驗(yàn)的積累。最近看設(shè)計(jì)模式的書(shū),對(duì)于每個(gè)模式,用C++寫(xiě)了個(gè)小例子,加深一下理解。主要參考《大話設(shè)計(jì)模式》和《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(DP)兩本書(shū)。本文介紹適配器模式的實(shí)現(xiàn)。
?? ? ? ?DP上的定義:適配器模式將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口,使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。它包括類適配器和對(duì)象適配器,本文針對(duì)的是對(duì)象適配器。舉個(gè)例子,在STL中就用到了適配器模式。STL實(shí)現(xiàn)了一種數(shù)據(jù)結(jié)構(gòu),稱為雙端隊(duì)列(deque),支持前后兩段的插入與刪除。STL實(shí)現(xiàn)棧和隊(duì)列時(shí),沒(méi)有從頭開(kāi)始定義它們,而是直接使用雙端隊(duì)列實(shí)現(xiàn)的。這里雙端隊(duì)列就扮演了適配器的角色。隊(duì)列用到了它的后端插入,前端刪除。而棧用到了它的后端插入,后端刪除。假設(shè)棧和隊(duì)列都是一種順序容器,有兩種操作:壓入和彈出。下面給出相應(yīng)的UML圖,與DP上的圖差不多。
?? ? ? ?根據(jù)上面的UML圖,很容易給出實(shí)現(xiàn)。
[cpp]?view plaincopyprint??? ? ? 使用方式如下:
[cpp]?view plaincopyprint?
?? ? ??本人享有博客文章的版權(quán),轉(zhuǎn)載請(qǐng)標(biāo)明出處?http://blog.csdn.net/wuzhekai1985
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的设计模式C++实现(6)——适配器模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 千元也有好画质!哈趣投影K1评测:私人定
- 下一篇: C/C++程序员必读的十本书(上)