本文小編為大家詳細(xì)介紹“C++設(shè)計(jì)模式之裝飾模式怎么實(shí)現(xiàn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“C++設(shè)計(jì)模式之裝飾模式怎么實(shí)現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)網(wǎng)站設(shè)計(jì),為客戶(hù)量身定制各類(lèi)網(wǎng)站建設(shè)業(yè)務(wù),包括企業(yè)型、電子商務(wù)型、成都響應(yīng)式網(wǎng)站建設(shè)公司、行業(yè)門(mén)戶(hù)型等各類(lèi)網(wǎng)站,實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,成功案例眾多。以客戶(hù)利益為出發(fā)點(diǎn),創(chuàng)新互聯(lián)網(wǎng)站制作為客戶(hù)規(guī)劃、定制網(wǎng)站制作符合企業(yè)需求、帶有營(yíng)銷(xiāo)價(jià)值的網(wǎng)絡(luò)建站方案認(rèn)真對(duì)待每一個(gè)客戶(hù),我們不用口頭的語(yǔ)言來(lái)吹擂我們的優(yōu)秀,上千多家的成功案例見(jiàn)證著我們的成長(zhǎng)。裝飾模式是一種經(jīng)典的類(lèi)功能擴(kuò)展模式,其精髓在裝飾類(lèi)使用繼承加聚合的方式獲得接口和要實(shí)現(xiàn)對(duì)象,然后通過(guò)自己實(shí)現(xiàn)擴(kuò)展接口
作用
裝飾模式通過(guò)裝飾類(lèi)動(dòng)態(tài)地將責(zé)任附加到對(duì)象上,若要擴(kuò)展功能,無(wú)需通過(guò)繼承增加子類(lèi)就能擴(kuò)展對(duì)象的新功能,提供了比繼承更有彈性的替代方案,避免了子類(lèi)數(shù)量膨脹帶來(lái)的系統(tǒng)臃腫。
代碼實(shí)現(xiàn)
class Component { public: Component(){} virtual ~Component(){} virtual void operation() = 0; }; class ConcreteComponentA : public Component { public: ConcreteComponentA(){} ~ConcreteComponentA(){} void operation() { fprintf(stderr, "ConcreteComponentA's operation!\n"); } }; class ConcreteComponentB : public Component { public: ConcreteComponentB(){} ~ConcreteComponentB(){} void operation() { fprintf(stderr, "ConcreteComponentB's operation!\n"); } }; class Decorator : public Component { public: Decorator() :mComponent(NULL){} virtual ~Decorator(){} virtual void operation() { if (mComponent) mComponent->operation(); } virtual void setComponent(Component* pComponent) { mComponent = pComponent; } protected: Component* mComponent; }; class ConcreteDecoratorE : public Decorator { public: ConcreteDecoratorE (); virtual ~ConcreteDecoratorE (); virtual void addBehavior() { mComponent->operation(); fprintf(stderr, "ConcreteDecoratorE's addBehavior!\n"); } }; class ConcreteDecoratorF : public Decorator { public: ConcreteDecoratorF (); virtual ~ConcreteDecoratorF (); virtual void addBehavior() { operation(); fprintf(stderr, "ConcreteDecoratorF's addBehavior!\n"); } }; int main() { ConcreteComponentB *pComponent = new ConcreteComponentB(); ConcreteDecoratorF decorator; decorator.setComponent(pComponent); decorator.addBehavior(); }
讀到這里,這篇“C++設(shè)計(jì)模式之裝飾模式怎么實(shí)現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。