C++設計模式淺識代理模式

來源:互聯網
上載者:User
代理模式(Proxy): 為其他對象提供一種代理以控制對這個對象(被代理者,即本人)的訪問。

在C#中實現方法是使用介面interface定義需要的方法,而在C++中需要實現一個類作為介面使用,其中定義需要的方法。這樣對我話,本人並不需要參與其中的具體活動,而由代理人出面。用戶端(第三方)也不認識本人,達到代理的作用。

上面的意思是:使用一個類封裝需要的代理方法。

代理模式應用:

遠程建立,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實。【DP】

虛擬代理,是根據需要建立開銷很大的對象。通過它來存放執行個體化需要很長時間的真是對象,例如:開啟一個很大的HTML網頁,我們看到的圖片是一張下載後才能看到,而未開啟的圖片框, 就是通過虛擬代理來替代真實的圖片。此時代理儲存了真實圖片的路徑和尺寸。

安全代理,用來控制真時對象訪問時的許可權【DP】,一般用於對象應該有不同存取權限的時候。

智能指引,是指當調用真實的對象時,代理處理另外一些事【DP】。

在此以代辦手機套餐為例:

測試案例:

[code]int main(){//整個過程中,本人都沒有出現    std::string name = "Jarrett";    //第三方公司    Company cp(name);  //申請人(本人)的名字告訴公司    //代理人    Proxy *px = new Proxy(cp);    //辦理58元套餐    px->A58();    //辦理88元套餐    px->A88();    //辦理128元套餐    px->A128();    return 0;}

Proxy類實現方法:

[code]//主體,提供介面。無需執行個體化,定義為純虛函數class Subject{public:    virtual void A58()const = 0;    virtual void A88()const = 0;    virtual void A128()const = 0;};//第三方公司class Company{   public:    std::string name; //公司要知道辦理套餐本人的名字    Company(std::string na):name(na){}  };//本人(被代理人)class oneSelf: public Subject{private:    Company cp; //本人要知道自己對誰做什麼,此處自己知道要對哪個公司辦理套餐public:    oneSelf(Company c):cp(c){} //此處由代理類來初始化    void A58()const override{        std::cout << cp.name << " for 58 packages.\n"; //告訴移動公司,我要辦58套餐    }    void A88()const override{        std::cout << cp.name << " for 88 packages.\n";    }    void A128()const override{        std::cout << cp.name << " for 128 packages.\n";    }};class Proxy:public Subject{private:    //代理誰?    oneSelf os;public:    Proxy(Company cp):os(oneSelf(cp)){}  //此處初始化本人的建構函式,達到了代理的目的    void A58()const override{        os.A58();    }    void A88()const override{        os.A88();    }    void A128()const override{        os.A128();    }};

以上就是C++設計模式淺識代理模式的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.