• <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>

            Just enjoy programming

            c++設(shè)計(jì)模式(三)代理模式(Proxy)與狀態(tài)模式(State)模式

                  代理(Proxy)模式,狀態(tài)(State)模式都提供一個(gè)代理類。代碼與代理類打交道,而實(shí)際工作的類隱藏在代理類背后。當(dāng)調(diào)用代理類中的一個(gè)函數(shù)時(shí),代理類僅轉(zhuǎn)而去調(diào)用實(shí)現(xiàn)類中的相應(yīng)的函數(shù)。這兩種模式是如此相似,從結(jié)構(gòu)上看,可以認(rèn)為代理模式只是狀態(tài)模式的一個(gè)特例。但是這兩個(gè)模式的內(nèi)涵是不一樣的。
                  基本思想很簡(jiǎn)單:代理類派生來(lái)自一個(gè)基類,由平行地派生來(lái)自同一個(gè)基類的一個(gè)或多個(gè)類提供實(shí)際的實(shí)現(xiàn)。當(dāng)一個(gè)代理對(duì)象被創(chuàng)建的時(shí)候,一個(gè)實(shí)現(xiàn)對(duì)象就分配給了它,代理對(duì)象就將函數(shù)調(diào)用發(fā)給實(shí)現(xiàn)對(duì)象。
                  從結(jié)構(gòu)上來(lái)看,代理模式和狀態(tài)模式的區(qū)別很簡(jiǎn)單:代理模式只有一個(gè)實(shí)現(xiàn)類,而狀態(tài)模式有多個(gè)(一個(gè)以上)實(shí)現(xiàn)。認(rèn)為這兩種設(shè)計(jì)模式的應(yīng)用也不同:代理模式控制對(duì)其實(shí)現(xiàn)類的訪問(wèn),而狀態(tài)模式動(dòng)態(tài)地改變其實(shí)現(xiàn)類。
            (1)代理模式例子:
            #include<iostream>

            using namespace std;

            class ProxyBase
            {
                public:
                    virtual void f()=0;
                    virtual void g()=0;
                    virtual void h()=0;
                    virtual ~ProxyBase(){}
            };


            class Implementation :public ProxyBase
            {
                public:
                    void f(){cout<<"Implementation.f()"<<endl;}
                    void g(){cout<<"Implementation.g()"<<endl;}
                    void h(){cout<<"Implementation.h()"<<endl;}
            };


            class Proxy: public ProxyBase
            {
                ProxyBase *implementation;
                public:
                    Proxy(){implementation=new Implementation();}
                    ~Proxy(){delete implementation;}


                    void f(){implementation->f();}
                    void g(){implementation->g();}
                    void h(){implementation->h();}
            };

            int main()
            {
                Proxy p;
                p.f();
                p.g();
                p.h();
            }

            (2)狀態(tài)模式
            #include<iostream>

            using namespace std;

            class Creature
            {
                class State
                {
                    public:
                        virtual string response()=0;
                };

                class Frog : public State
                {
                    public:
                        string response(){return "Ribbet!";}
                };

                class Prince:public State
                {
                    public:
                        string response(){return "Darling!";}
                };

                State *state;
                public:
                    Creature(): state(new Frog()){}
                    void greet()
                    {
                        cout<<state->response()<<endl;
                    }
                    void kiss()
                    {
                        delete state;
                        state=new Prince();
                    }
            };


            int main()
            {
                Creature creature;
                creature.greet();
                creature.kiss();
                creature.greet();
            }

            posted on 2011-04-28 16:04 周強(qiáng) 閱讀(727) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c/c++

            久久精品国产福利国产秒| 岛国搬运www久久| 免费一级做a爰片久久毛片潮| 久久人人爽人人爽人人片AV不| 国产色综合久久无码有码| 国产69精品久久久久观看软件| 亚洲精品无码久久久| 久久精品国产99久久久香蕉| 久久99精品久久久久久野外| 久久www免费人成看国产片| 久久这里有精品视频| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 一级做a爰片久久毛片16| 久久国产精品成人免费| 国产高清国内精品福利99久久| 久久激情五月丁香伊人| 一日本道伊人久久综合影| 亚洲精品无码久久久久去q | 国产AV影片久久久久久| 久久综合一区二区无码| 中文字幕久久波多野结衣av| 狠狠色丁香久久婷婷综| 欧美一级久久久久久久大片 | 久久久久久毛片免费播放| 久久久综合九色合综国产| 亚洲精品国产自在久久| 俺来也俺去啦久久综合网| 欧美国产精品久久高清| 无码日韩人妻精品久久蜜桃 | 午夜不卡久久精品无码免费| 亚洲综合久久综合激情久久| 狠狠综合久久综合88亚洲| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久丫精品国产亚洲av不卡| 久久国产成人亚洲精品影院| 久久精品亚洲精品国产色婷| 日日狠狠久久偷偷色综合免费| 国产精品久久久久久福利漫画 | 人妻无码精品久久亚瑟影视| 久久精品夜夜夜夜夜久久| 怡红院日本一道日本久久|