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
相关推荐
郝学胜_神的一滴11 小时前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
咖啡八杯21 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
见过夏天1 天前
C++ 基础入门完全指南
c++
胡萝卜术1 天前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
亦暖筑序2 天前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户805533698032 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK3 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境3 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境3 天前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴4 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake