c++设计模式-代理模式

一、模式简介

代理模式是一种结构型设计模式,通过引入代理对象(Proxy),实现客户端(Client)间接访问主题对象(Subject)。

优势:

代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;

代理对象可以扩展目标对象的功能;

代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;

二、模式概念

1.Subject(抽象对象):定义了真实对象和代理对象的共同接口。

2.RealSubject(真实对象):即被代理对象,定义了真正需要被代理的业务逻辑。

3.Proxy(代理对象):客户端与真实对象之间的中介,通过该对象访问真实对象。

三、代码实现

cpp 复制代码
#include <iostream>
using namespace std;
//抽象类
class Subject {
public:    
  Subject(){}    
  virtual void request() = 0;//纯虚函数
};

class RealSubject : public Subject {
public:    
  RealSubject(){}    
  void request() {       
     cout << "RealSubject request" << endl;    
  }
};

class Proxy : public Subject {
private:    
  Subject *realSubject;

public:
  Proxy() {        
    realSubject = new RealSubject();    
  }   
   
  ~Proxy(){        
    delete realSubject;    
  }
     
  void request() {        
    realSubject->request();    
  }
};

int main() 
{    
  cout << "this is proxy pattern" << endl;    
  Proxy proxy;    
  proxy.request();    
  return 0;
}

四、运行结果

bash 复制代码
this is proxy pattern
RealSubject request
相关推荐
2401_892070981 天前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
yuzhuanhei1 天前
Visual Studio 配置C++opencv
c++·学习·visual studio
不爱吃炸鸡柳1 天前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发1 天前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense1 天前
设计模式之工厂模式
java·开发语言·设计模式
Java码农也是农1 天前
Multi-Agent 系统设计模式
设计模式·agent·multi-agent
sg_knight1 天前
设计模式实战:状态模式(State)
python·ui·设计模式·状态模式·state
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
STL 栈 队列
开发语言·c++
2401_892070982 天前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象
郭涤生2 天前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法