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
相关推荐
CoderCodingNo16 小时前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
陳103016 小时前
C++:红黑树
开发语言·c++
一切尽在,你来16 小时前
C++ 零基础教程 - 第 6 讲 常用运算符教程
开发语言·c++
weixin_4997715516 小时前
C++中的组合模式
开发语言·c++·算法
近津薪荼17 小时前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck17 小时前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl
_F_y17 小时前
C++重点知识总结
java·jvm·c++
初願致夕霞18 小时前
Linux_进程
linux·c++
Thera77719 小时前
【Linux C++】彻底解决僵尸进程:waitpid(WNOHANG) 与 SA_NOCLDWAIT
linux·服务器·c++
Wei&Yan19 小时前
数据结构——顺序表(静/动态代码实现)
数据结构·c++·算法·visual studio code