国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設計模式之代理模式(Proxy)的C++實現

這篇具有很好參考價值的文章主要介紹了設計模式之代理模式(Proxy)的C++實現。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、代理模式的提出

在組件的開發(fā)過程中,有些對象由于某種原因(比如對象創(chuàng)建的開銷很大,或者對象的一些操作需要做安全控制,或者需要進程外的訪問等),會使Client使用者在操作這類對象時可能會存在問題:(1)使用者直接訪問這種對象會使系統(tǒng)帶來很多麻煩。(2)或者使用者使不能直接訪問這類對象;使用代理模式就可以解決此類問題。代理模式是在實際操作類和Client使用者之間增加一個代理類,實際操作類的一些操作,比如對象創(chuàng)建、接口訪問、安全控制等相關操作都可以在增加的代理類里面添加相關的功能代碼。這樣Client實際上是通過代理類來訪問和操作實際類。

2、需求描述

有一個主題類,該類具有請求功能和數據轉換功能。而Client使用者不能直接訪問和操作它,只能間接的通過其它類進行訪問操作。

3、代理模式的代碼實現

(1)代碼UML圖如下:

設計模式之代理模式(Proxy)的C++實現,設計模式,設計模式,代理模式

(2)代碼實現如下:

#include <iostream>

class AbsSubject
{
public:
    virtual void request()=0;
    virtual void dataTransfer()=0;

    virtual ~AbsSubject(){};
};

class RealSubject:public AbsSubject
{
public:
    virtual void request() override
    {
        std::cout << "RealSubject request" << std::endl;
    };

    virtual void dataTransfer() override
    {
        std::cout << "RealSubject dataTransfer" << std::endl;
    }
};

class Proxy:public AbsSubject
{
private:
    RealSubject* realSubject{nullptr};
public:
    Proxy()
    {
        realSubject = new RealSubject();
    };
    virtual void request() override
    {
        if(nullptr == realSubject)
        {
            return;
        }
        std::cout << "Proxy request" << std::endl;
        realSubject->request();
    };

    virtual void dataTransfer()override
    {
        if(nullptr == realSubject)
        {
            return;
        }
        std::cout << "Proxy dataTransfer" << std::endl;
        realSubject->dataTransfer();
    };

    virtual ~Proxy()
    {
        std::cout << " ~Proxy" << std::endl;
        if(nullptr != realSubject)
        {
            delete realSubject;
            realSubject = nullptr;
        }
    }
};

class Client
{
public:
    void DoWork()
    {
        //創(chuàng)建代理對象
        Proxy proxy;
        //通過代理對象來訪問實際對象的接口
        proxy.request();
        proxy.dataTransfer();
    }
};

int main()
{
    Client obj;
    obj.DoWork();
    return 0;
}

運行結果如下:

設計模式之代理模式(Proxy)的C++實現,設計模式,設計模式,代理模式

4、代理模式缺點

系統(tǒng)中類數量增加;由于增加代理類,訪問實際類的速度會在某種程度上降低。增加系統(tǒng)復雜度。

5、代理模式優(yōu)點

可以訪問不能訪問的對象;降低系統(tǒng)直接的耦合度,便于功能擴展。

關于代理模式的介紹也可參考:

設計模式之代理模式(C++實現)_墨1024的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-664687.html

到了這里,關于設計模式之代理模式(Proxy)的C++實現的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 設計模式--代理模式(Proxy Pattern)

    設計模式--代理模式(Proxy Pattern)

    代理模式(Proxy Pattern)是一種結構型設計模式,它允許一個對象(代理)充當另一個對象(真實對象)的接口,以控制對該對象的訪問。代理對象可以在訪問真實對象之前或之后執(zhí)行一些操作,從而增強或限制真實對象的行為。 代理模式的主要目的是為了控制訪問,而不是

    2024年02月10日
    瀏覽(22)
  • 設計模式-7--代理模式(Proxy Pattern)

    設計模式-7--代理模式(Proxy Pattern)

    代理模式(Proxy Pattern)是一種結構型設計模式,它允許一個對象(代理)充當另一個對象(真實對象)的接口,以控制對該對象的訪問。代理對象可以在訪問真實對象之前或之后執(zhí)行一些操作,從而增強或限制真實對象的行為。 代理模式的主要目的是為了控制訪問,而不是

    2024年02月10日
    瀏覽(17)
  • 設計模式——1_6 代理(Proxy)

    設計模式——1_6 代理(Proxy)

    詩有可解不可解,若鏡花水月勿泥其跡可也 —— 謝榛 為其他對象提供一種代理以控制對這個對象的訪問 某天,你突發(fā)奇想,想做一個可以展示指定文件夾內所有圖片的桌面應用。這個應用很簡單,遍歷文件夾,發(fā)現圖片文件,把圖片加載到GUI上的圖片列表里,顯示圖片名和

    2024年01月25日
    瀏覽(18)
  • C++ 設計模式之代理模式

    C++ 設計模式之代理模式

    【提示:如果不想看文字介紹,可以直接跳轉到C++編碼部分】 【簡介】什么是代理模式 ????????代理模式? Proxy Pattern? 是?種 結構型設計模式 ,?于控制對其他對象的訪問。在代理模式中,允許?個對象(代理)充當另?個對象(真實對象)的接?,以控制對這個對象

    2024年01月16日
    瀏覽(9)
  • C++設計模式-- 2.代理模式 和 外觀模式

    C++設計模式-- 2.代理模式 和 外觀模式

    代理模式的定義: 為其他對象提供一種代理以控制對這個對象的訪問 。在某些情況下,一個對象不適合 或不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。 代理模式有以下三種角色: Subject(抽象主題角色) :真實主題與代理主題的共同

    2024年01月17日
    瀏覽(25)
  • C++設計模式結構型之代理模式

    一、概述 ?? ?代理模式是一種結構型模式,在很多不同的場合具有廣泛的分類和應用。其主要實現的思想是在客戶端和真正要訪問的對象之間引入一個 代理對象(間接層),于是,以往客戶端對真正對象的訪問現在變成了通過代理對象進行訪問,代理對象在這里起到了一個

    2024年02月13日
    瀏覽(32)
  • 用Rust實現23種設計模式之 代理模式

    代理模式是一種結構型設計模式,它允許通過代理對象來控制對真實對象的訪問。以下是代理模式的優(yōu)點和使用場景: 控制訪問 :代理模式可以控制對真實對象的訪問,可以在訪問前后進行一些額外的操作,如權限驗證、緩存等。 解耦和靈活性 :代理模式將客戶端與真實對

    2024年02月14日
    瀏覽(27)
  • (二)結構型模式:8、代理模式(Proxy Pattern)(C++示例)

    (二)結構型模式:8、代理模式(Proxy Pattern)(C++示例)

    目錄 1、代理模式(Proxy Pattern)含義 2、代理模式的UML圖學習 3、代理模式的應用場景? 4、代理模式的優(yōu)缺點 5、C++實現代理模式的實例 1、代理模式(Proxy Pattern)含義 代理模式(Proxy),為其他對象提供一種代理以控制對這個對象的訪問。 代理模式(Proxy Pattern)是一種結構

    2024年02月12日
    瀏覽(18)
  • 設計模式:命令模式(C++實現)

    命令模式(Command Pattern)是一種行為設計模式,它將請求封裝成一個對象,從而使您可以使用不同的請求對客戶端進行參數化。這使得客戶端可以獨立于具體的請求和接收者對請求進行操作。 以下是一個簡單的C++命令模式的示例: 在上述示例中,Command是命令的基類,定義了

    2024年02月07日
    瀏覽(20)
  • 【設計模式】Head First 設計模式——策略模式 C++實現

    設計模式最大的作用就是在變化和穩(wěn)定中間尋找隔離點,然后分離它們,從而管理變化。將變化像小兔子一樣關到籠子里,讓它在籠子里隨便跳,而不至于跳出來把你整個房間給污染掉。 將行為想象為一族算法,定義算法族,分別封裝起來,讓他們之間可以互相替換,使得算

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包