美文网首页
设计模式-结构模式-代理模式

设计模式-结构模式-代理模式

作者: 阿棍儿_Leon | 来源:发表于2020-04-29 17:37 被阅读0次

代理模式为其他对象提供一种代理以控制对这个对象的访问。其极简实现版本与装饰器模式很像,要注意区分。代理模式注重对目标类的访问控制,如果把控制认为是一种装饰,那么装饰的范畴相对更大一些。

以下代码定义了对象的抽象类。

#include <iostream>

using namespace std;

class Subject
{
public:
    virtual ~Subject(){}
    virtual void Request()=0;
};

以下代码定义了用户真正要访问的对象类。

class TargetSubject:public Subject
{
public:
    void Request()
    {
        cout<<__PRETTY_FUNCTION__<<endl;
    }
};

以下代码定义了代理类。

class Proxy:public Subject
{
private:
    Subject* Target;
public:
    Proxy(Subject* target):Target(target){}
    void Request()
    {
        Target->Request();
    }
};

以下代码使用代理类对目标类对象进行了访问。

int main(void){
    Subject* target = new TargetSubject();
    Subject* proxy = new Proxy(target);
    proxy->Request();
    delete proxy;
    delete target;
    return 0;
}

输出

virtual void TargetSubject::Request()

相关文章

网友评论

      本文标题:设计模式-结构模式-代理模式

      本文链接:https://www.haomeiwen.com/subject/mjsnwhtx.html