• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            蝸牛的家
            男兒當(dāng)自強(qiáng)
            posts - 48,  comments - 21,  trackbacks - 0
            1 適用性
            \• 在不影響其他對(duì)象的情況下,以動(dòng)態(tài)、透明的方式給單個(gè)對(duì)象添加一些職責(zé),如:加密層,解密層。
            • 處理那些可能偶爾才會(huì)用到的特性接口
            • 當(dāng)不能采用生成子類(lèi)的方法進(jìn)行擴(kuò)充時(shí)。一種情況是,可能有大量獨(dú)立的擴(kuò)展,為支持
            每一種組合將產(chǎn)生大量的子類(lèi),使得子類(lèi)數(shù)目呈爆炸性增長(zhǎng)
            #include "stdafx.h"
            #include 
            <iostream>
            using namespace std;


            class Component            //被裝飾者抽象類(lèi)
            {
            public:
                
            virtual void Draw() = 0;
            };
            class Decorator : public Component //被裝飾者基類(lèi)
            {
            public:
                Decorator(Component 
            *c) : _component(c){}
                
            ~Decorator() {delete _component;}

                
            virtual void Draw() { if (_component) _component->Draw();}
            private:
                Component 
            *_component;
            };
            //////////////////////////////////////////////////////////////////////////
            class MyComponent : public Component //被裝飾者
            {
            public:
                
            virtual void Draw() {cout << "MyComponent::Draw()" << endl;}
            };
            //////////////////////////////////////////////////////////////////////////
            class BorderDecorator : public Decorator //邊框裝飾
            {
            public:
                BorderDecorator(Component 
            *c) : Decorator(c){}
                
            virtual void Draw()
                {
                    cout 
            << "DrawBorder" << endl;
                    Decorator::Draw();
                }
            };
            class ScrollDecorator : public Decorator //滾動(dòng)條裝飾
            {
            public:
                ScrollDecorator(Component 
            *c) : Decorator(c){}
                
            virtual void Draw()
                {
                    cout 
            << "DrawSrollbar" << endl;
                    Decorator::Draw();
                }
            };
            int main()
            {
                Component 
            *c2 = new BorderDecorator(
                    
            new MyComponent()); //裝飾邊框的組件
                c2->Draw();
                delete c2;

                Component 
            *c3 = new ScrollDecorator(
                    
            new BorderDecorator(
                    
            new MyComponent())); //同時(shí)裝飾上邊框和滾動(dòng)條的組件
                c2->Draw();
                delete c3;

                system(
            "pause");
                
            return 0;
            }
            posted on 2009-01-16 15:58 黑色天使 閱讀(378) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 設(shè)計(jì)模式

            <2008年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(2)

            隨筆分類(lèi)

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            97精品国产97久久久久久免费| 性色欲网站人妻丰满中文久久不卡| 久久夜色精品国产噜噜亚洲AV| 亚洲综合伊人久久大杳蕉| 五月丁香综合激情六月久久| 久久久精品人妻一区二区三区四| 青青草国产精品久久久久| 亚洲国产成人精品女人久久久 | 国产69精品久久久久久人妻精品| 嫩草伊人久久精品少妇AV| 99热精品久久只有精品| 少妇无套内谢久久久久| 91精品国产综合久久久久久| 国产一区二区精品久久凹凸 | 欧美午夜A∨大片久久| 亚洲乱码中文字幕久久孕妇黑人| 久久国产精品久久久| 国产精品久久久久久久久软件| 国产精品久久成人影院| 久久九九兔免费精品6| 久久久久女教师免费一区| 精品无码久久久久久午夜| 国产69精品久久久久观看软件| 国产69精品久久久久9999| 久久国产精品99国产精| 7777久久久国产精品消防器材| 久久无码人妻精品一区二区三区| 99久久无色码中文字幕| 久久久噜噜噜www成人网| 无码人妻久久一区二区三区免费| 无码国内精品久久人妻麻豆按摩 | 久久AV无码精品人妻糸列| 久久99精品免费一区二区| 久久精品国产精品青草| 91精品国产综合久久精品| 国产精品久久久久天天影视| 久久亚洲精品无码AV红樱桃| 人妻精品久久久久中文字幕69| 99久久做夜夜爱天天做精品| 免费精品久久久久久中文字幕| 久久久久国产一区二区|