其他分享
首页 > 其他分享> > 代理模式 Proxy

代理模式 Proxy

作者:互联网

代理模式 Proxy

动机

在面向对象系统中,由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程额外的访问等),直接访问会给使用者,或者系统结构带来很多麻烦.

如何在不是去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接曾是软件开发中常见的解决方式

模式定义

为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问

实例

朴素
客户端要去使用process 但是process周围需要做很多事情

class ISubject{
public:
    virtual void process();
};

class RealSubject : public ISubject{
public:
    virtual void process(){
        //..
    }
}

class ClientApp{
    ISubject *subject;
public:
    ClientApp(){
        subject = new RealSubject();
    }
    ISubject *subject;
    void DoTask(){
        //... 可能是分布式原因 可能是安全原因等等 需要很多操作
        subject -> process();
        //... 同样需要很多操作
    }
}

代理模式

class ISubject{
public:
    virtual void process();
};

class RealSubject : public ISubject{

public:
    virtual void process(){
        //..自己写的类方法
    }
}

class SubjectProxy : public ISubject{   
private:
    RealSubject realSubject;
public:
    virtual void process(){
        //对RealSubject的一种间接访问
        
        //... 可能是分布式原因 可能是安全原因等等 需要很多操作
        RealSubject->process();
        //... 同样需要很多操作
    }
}
//Proxy的设计
class ClientApp{
    ISubject *subject;
public:
    ClientApp(){
        subject = new RealSubject();
    }
    ISubject *subject;
    void DoTask(){
        subject -> process();
    }
}

结构

在这里插入图片描述

要点总结

笔记

标签:process,void,ISubject,代理,模式,Proxy,RealSubject,public,subject
来源: https://blog.csdn.net/m0_46656833/article/details/120524666