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
相关推荐
余衫马2 小时前
为什么在 Windows 上用 Clang/LLVM?
c++·windows·c
陳10302 小时前
C++:list(2)
开发语言·c++
Huangichin2 小时前
C++期末复习
数据结构·c++·算法
草莓熊Lotso2 小时前
Linux 命令行参数与环境变量实战:从基础用法到底层原理
linux·运维·服务器·开发语言·数据库·c++·人工智能
枫叶丹42 小时前
【Qt开发】Qt系统(七)-> Qt网络安全
c语言·开发语言·c++·qt·网络安全
草莓熊Lotso2 小时前
Qt 控件核心入门:从基础认知到核心属性实战(含资源管理)
运维·开发语言·c++·人工智能·后端·qt·架构
Dream it possible!13 小时前
LeetCode 面试经典 150_二分查找_在排序数组中查找元素的第一个和最后一个位置(115_34_C++_中等)
c++·leetcode·面试
月光下的麦克14 小时前
如何查案动态库版本
linux·运维·c++
小六子成长记14 小时前
【C++】:搜索二叉树的模拟实现
数据结构·c++·算法