日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++设计模式8--装饰模式 Decorator --动态的增减功能

發(fā)布時(shí)間:2024/3/13 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++设计模式8--装饰模式 Decorator --动态的增减功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

分享一下我老師大神的人工智能教程!零基礎(chǔ),通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉(zhuǎn)載本篇文章。分享知識(shí),造福人民,實(shí)現(xiàn)我們中華民族偉大復(fù)興!

新奇的IPad

快到媳婦生日了,這幾天加班加點(diǎn)的干活,給媳婦買了個(gè)IPadMini,可把媳婦樂壞了,媳婦拿到手第一天,就跑出去跟姐妹們得瑟了一把。

?

#include <iostream>using namespace std;class Pad{public:?Pad(){ }?virtual ~Pad(){ }?virtual void Show( ) = 0;};class IPad : public Pad{public :??? IPad( ){ }??? virtual ~IPad( ){? };??? void Show( )??? {??????? std::cout <<"新的Ipad Mini..." <<endl;??? }};int main( ){??? // 給媳婦買了一個(gè)IpadMini??? Pad *pad = new IPad( );??? pad->Show( );?????????????? // 跑出去得瑟一下?return 0;}

?弄個(gè)保護(hù)套

晚上回來,我問她,開心不,她說,開心是開心,但是朋友們都說怎么沒給Pad弄個(gè)保護(hù)套,要不容易摔,摔壞了去維修可是很貴的,我嘻嘻一笑,容易直接上蘋果店買了一個(gè),走上路上美滋滋的。

?

#include <iostream>using namespace std;// pad類的抽象接口class Pad{public:?Pad(){ }?virtual ~Pad(){ }?virtual void Show( ) = 0;};// 新的IPadMiniclass IPad : public Pad{public :??? IPad( ){ }??? virtual ~IPad( ){? };??? void Show( )??? {??????? std::cout <<"新的Ipad Mini..." <<endl;??? }};// 加了保護(hù)套的IPadMiniclass CoverIPad : public IPad{public :??? CoverIPad( ){ }??? virtual ~CoverIPad( ){? };??? void Show( )??? {??????? std::cout <<"加了保護(hù)套的,新的Ipad Mini..." <<endl;??? }};int main( ){??? // 現(xiàn)在我買了一個(gè)IpadMini??? Pad *pad = new CoverIPad( );??? pad->Show( );?????????????? // 跑出去得瑟一下}

還要個(gè)貼膜???

回家拿給媳婦看,媳婦說,老公能不能再給貼個(gè)膜啊?,人家指甲長(zhǎng),萬一把屏劃花了怎么辦呢呢,還有....(此處省略一萬字),好吧再次出發(fā),等等,難道要我在派生出一個(gè)CoverFoilIPad,天天這樣子一天一個(gè)新的花樣,這框架得多復(fù)雜,不行得換個(gè)方式。

我想想,直接弄裝飾得了,那些保護(hù)套,貼膜什么的不都是裝飾么。。

好了裝飾模式出現(xiàn)了。

基礎(chǔ)還是我們的Ipad,

//公共抽象類// 對(duì)應(yīng)于 -=> 抽象構(gòu)件(Component)角色class Pad{public:?Pad(){ }?virtual ~Pad(){ }?virtual void Show( ) = 0;};// 具體構(gòu)件(Concrete Component)角色class IPad : public Pad{public :??? IPad( ){ }??? virtual ~IPad( ){? };??? void Show( )??? {??????? std::cout <<"新的Ipad Mini..." <<endl;??? }};
下面是那些裝飾,保護(hù)套,貼膜,管你是什么,愛來多少來多少,咱不怕

// 裝飾(Decorator)角色:class Decorator : public Pad{public :??? Decorator(Pad *pad)??? {??????? m_pad = pad;??? }??? virtual ~Decorator( ){ };??? void Show( )??? {??????? this->m_pad->Show( );?????? // 展示一下自己的手機(jī)??? }protected:??? Pad *m_pad;??? virtual void AddDecorator( ) = 0;};// 具體裝飾(Concrete Decorator)角色class CoverDecorator : public Decorator{public :??? CoverDecorator(Pad *pad)??? :Decorator(pad)??? {??? }??? virtual ~CoverDecorator( ){ }??? void Show( )??? {??????? this->AddDecorator( );??????? Decorator::Show( );??? }protected:??? void AddDecorator( )??? {??????? std::cout <<"弄了個(gè)保護(hù)套";??? }};// 具體裝飾(Concrete Decorator)角色class FoilDecorator : public Decorator{public :??? FoilDecorator(Pad *pad)??? :Decorator(pad)??? {??? }??? virtual ~FoilDecorator( ){ }??? void Show( )??? {??????? this->AddDecorator( );??????? Decorator::Show( );??? }protected:??? void AddDecorator( )??? {??????? std::cout <<"貼了個(gè)的貼膜,";??? }};
下面看看媳婦怎么去得瑟的

int main( ){??? // 現(xiàn)在我買了一個(gè)IpadMini??? Pad *pad = new IPad( );??? pad->Show( );?????????????? // 跑出去得瑟一下??? // 不行,還需要加個(gè)保護(hù)套??? Pad *coveDeco = new CoverDecorator(pad);??? coveDeco->Show( );?????????????? // 現(xiàn)在可以了吧,再出去得色一下??? // 好吧,再來個(gè)貼膜??? Pad *foilDeco = new FoilDecorator(coveDeco);??? foilDeco->Show( );}

模式總結(jié)


概述

又叫裝飾者模式。裝飾模式是在不必改變?cè)愇募褪褂美^承的情況下,動(dòng)態(tài)的擴(kuò)展一個(gè)對(duì)象的功能。它是通過創(chuàng)建一個(gè)包裝對(duì)象,也就是裝飾來包裹真實(shí)的對(duì)象


特點(diǎn)

①裝飾對(duì)象和真實(shí)對(duì)象有相同的接口。這樣客戶端對(duì)象就可以和真實(shí)對(duì)象相同的方式和裝飾對(duì)象交互。

② 裝飾對(duì)象包含一個(gè)真實(shí)對(duì)象的引用(reference)

③ 裝飾對(duì)象接受所有來自客戶端的請(qǐng)求。它把這些請(qǐng)求轉(zhuǎn)發(fā)給真實(shí)的對(duì)象。

④裝飾對(duì)象可以在轉(zhuǎn)發(fā)這些請(qǐng)求以前或以后增加一些附加功能。這樣就確保了在運(yùn)行時(shí),不用修改給定對(duì)象的結(jié)構(gòu)就可以在外部增加附加的功能。在面向?qū)ο蟮脑O(shè)計(jì)中,通常是通過繼承來實(shí)現(xiàn)對(duì)給定類的功能擴(kuò)展。

要點(diǎn):

1.?裝飾者和被裝飾對(duì)象有相同的超類型。

2.?可以用一個(gè)或多個(gè)裝飾者包裝一個(gè)對(duì)象。

3.?裝飾者可以在所委托被裝飾者的行為之前或之后,加上自己的行為,以達(dá)到特定的目的。

4.?對(duì)象可以在任何時(shí)候被裝飾,所以可以在運(yùn)行時(shí)動(dòng)態(tài)的,不限量的用你喜歡的裝飾者來裝飾對(duì)象。

5.?裝飾模式中使用繼承的關(guān)鍵是想達(dá)到裝飾者和被裝飾對(duì)象的類型匹配,而不是獲得其行為。

6.?裝飾者一般對(duì)組件的客戶是透明的,除非客戶程序依賴于組件的具體類型。在實(shí)際項(xiàng)目中可以根據(jù)需要為裝飾者添加新的行為,做到“半透明”裝飾者。

適用場(chǎng)景與優(yōu)缺點(diǎn):

在以下情況下應(yīng)當(dāng)使用裝飾模式:

1.需要擴(kuò)展一個(gè)類的功能,或給一個(gè)類增加附加責(zé)任。?

2.需要?jiǎng)討B(tài)地給一個(gè)對(duì)象增加功能,這些功能可以再動(dòng)態(tài)地撤銷。?

3.需要增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能,從而使繼承關(guān)系變得不現(xiàn)實(shí)。

優(yōu)點(diǎn):

1.?Decorator模式與繼承關(guān)系的目的都是要擴(kuò)展對(duì)象的功能,但是Decorator可以提供比繼承更多的靈活性。

2.?通過使用不同的具體裝飾類以及這些裝飾類的排列組合,設(shè)計(jì)師可以創(chuàng)造出很多不同行為的組合。

缺點(diǎn):

1.?這種比繼承更加靈活機(jī)動(dòng)的特性,也同時(shí)意味著更加多的復(fù)雜性。

2.?裝飾模式會(huì)導(dǎo)致設(shè)計(jì)中出現(xiàn)許多小類,如果過度使用,會(huì)使程序變得很復(fù)雜。

3.?裝飾模式是針對(duì)抽象組件(Component)類型編程。但是,如果你要針對(duì)具體組件編程時(shí),就應(yīng)該重新思考你的應(yīng)用架構(gòu),以及裝飾者是否合適。當(dāng)然也可以改變Component接口,增加新的公開的行為,實(shí)現(xiàn)“半透明”的裝飾者模式。在實(shí)際項(xiàng)目中要做出最佳選擇。

?


???????????

給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow

總結(jié)

以上是生活随笔為你收集整理的C++设计模式8--装饰模式 Decorator --动态的增减功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 97精品视频在线观看 | 99riav在线 | 欧美性猛交xxxx偷拍洗澡 | 最近2019中文字幕大全第二页 | 九九热色| 亚洲欧洲精品一区 | 亚洲狼人社区 | 欧美成人免费观看视频 | 亚洲综合久久婷婷 | 91精品婷婷国产综合久久 | 丁香色网 | 亚洲午码 | 免费在线观看网址 | 一区二区三区在线观看 | 亚洲精品国产91 | 日韩国产激情 | 国产精品自拍合集 | 久草国产视频 | 简单av在线 | 在线看日本| 国产青青视频 | 蜜桃成熟时李丽珍在线观看 | 免费污片网站 | 欧美激情图片 | 成人夜视频 | 国产破处av | 国产欧美日韩精品一区 | 亚洲成a人片在线www | 四虎精品在永久在线观看 | 成人在线观看国产 | 久久精品免费在线观看 | 在线视频导航 | 中文字幕在线看高清电影 | 性感美女一级片 | 国产精品1区2区 | 涩涩网站在线 | 黄色成人av在线 | 欧美成人黄色小视频 | 免费看黄色的网站 | 青青草国产一区 | 亚洲免费观看高清完整 | 日韩二区三区四区 | youjizz国产精品 | 久久久久久无码午夜精品直播 | 天天干天天透 | 成人av网站免费 | 一区二区免费播放 | 狠狠操在线 | 又黄又免费的网站 | 国产精品成人va在线观看 | 久久合合| 麻豆成人91精品二区三区 | 亚洲一区二区福利 | 韩国伦理片在线播放 | 久久亚州 | 91麻豆精品国产91久久久无需广告 | 9999av| 成年人www | 天堂va蜜桃一区 | 福利视频午夜 | av直播在线观看 | 绯色av蜜臀vs少妇 | 成人性做爰片免费视频 | 成人免费视屏 | 日韩成人av在线 | 国产伦理在线 | 国产视频三级 | 欧美精品二区三区 | 日韩免费中文字幕 | 人妻熟女一区二区三区 | 日韩视频免费观看高清 | 高h文在线 | aa丁香综合激情 | 黄色成年人网站 | 欧美一区视频在线 | 淫羞阁av导航| 三级色视频 | 玖草在线观看 | 亚洲欧美校园春色 | 国产91成人 | 一区二区三区在线观看视频 | 视频一区二区三区四区五区 | 欧美一区二区三区四区在线 | 日韩骚片 | 黑人巨大精品欧美一区二区 | 免费国产羞羞网站视频 | av网站在线免费观看 | 亚洲视频456 | 天堂av官网 | 综合xx网 | av中文字幕免费在线观看 | 夜夜噜噜噜 | 日本一级黄色大片 | 丁香花免费高清完整在线播放 | 青青青青青青青青草 | 色妞色视频一区二区三区四区 | 中文字幕日韩精品在线 | 日女人网站 | 色性av |