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
相关推荐
m0_5698814728 分钟前
基于C++的数据库连接池
开发语言·c++·算法
.select.35 分钟前
c++ auto
开发语言·c++·算法
2401_8845632438 分钟前
C++中的访问者模式高级应用
开发语言·c++·算法
君义_noip44 分钟前
信息学奥赛一本通 1613:打印文章
c++·算法·信息学奥赛·csp-s
消失的旧时光-19431 小时前
C++ 多态核心三件套:虚函数、纯虚函数、虚析构函数(面试 + 工程完全指南)
开发语言·c++·面试·虚函数·纯虚函数·虚析构函数
赵民勇1 小时前
gtkmm库之GtkWindow与ApplicationWindow用法详解
linux·c++
咱就是说不配啊1 小时前
3.20打卡day34
数据结构·c++·算法
Larry_Yanan2 小时前
Qt网络开发之基于 QWebEngine 实现简易内嵌浏览器
linux·开发语言·网络·c++·笔记·qt·学习
2401_831824962 小时前
嵌入式C++驱动开发
开发语言·c++·算法
cui_ruicheng2 小时前
C++数据结构进阶:哈希表实现
数据结构·c++·算法·哈希算法·散列表