0
点赞
收藏
分享

微信扫一扫

设计模式----代理模式

闲鱼不咸_99f1 2022-01-20 阅读 73
代理模式

代理模式属于结构型模式

客户不想直接访问一个对象,通过一个代理进行间接访问。

但是又区别于外观,外观是对多个子系统抽象,而代理是间接访问,重点强调间接,外观重点强调抽象统一外观。

定义:给某个对象提供一个代理,并由代理控制原对象的引用。对象结构型模式。

实现demo:

main.cpp

#include <iostream>
#include "RealSubject.h"
#include "Proxy.h"

using namespace std;

int main (int argc , char * argv[])
{
    //创建代理对象
    Proxy proxy;

    //代理对象发起动作,引入真实对象
    proxy.request();

    return 0;
    
}

Proxy.h 

/************************************
**Proxy.h
**
**
************************************/

#ifndef __PROXY_H__
#define __PROXY_H__

//真实对象
#include "RealSubject.h"

//抽象主题,用于生成真实对象和代理对象
#include "Subjetct.h" 

class Proxy : public Subject{
        
    public:
            Proxy();
            virtual ~Proxy();
            void request();
    private:
            void afterRequest();
            void PreRequest();

            //真实对象 被代理者
            RealSubject * m_realsubject;
} 
#endif 

Proxy.cpp

#include "Proxy.h"
#include <iostream>

using namespace std;

Proxy::Proxy(){
    m_realsubject = new RealSubject();
    
}
Proxy::~Proxy(){
    delete m_realsubject;
}
void Proxy::afterRequest(){
    cout << "Proxy::afterRequest" << endl;

}
void Proxy::preRequest(){
    cout << "Proxy :: prerequest" <<endl;

}

void Proxy::request(){

    preRequest();
    m_realrequest->request();
    afterRequest();

}

优缺点

优点:

1、降低耦合度

2、小对象代表大对象、

3、远程代理---》比如开发机和服务器之间代理、内网外网隔离

缺点:增加复杂度、增加了代理对象

举报

相关推荐

0 条评论