0%

【设计模式】代理模式

本篇介绍了代理模式及相关的面向对象设计原则。代理模式为其他对象提供一种替身或占位符(代理)以控制对这个对象的访问。

代理模式顾名思义,为某一个对象提供一个代理,从而使客户想要访问该对象的时候与代理进行沟通,而不是直接与该对象发生交互。这在很多时候是很重要的,比如某些系统需要安全控制或者直接访问对象的开销很大时,就需要代理模式来控制对象的访问。

我们可以让代理对象和实际对象继承于同一个基类,这样在需要访问实际对象的时候就可以使用代理对象来替代了。代理模式的类图如下:

image-20230308133854858

框架代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class ISubject {
public:
virtual void process();
};
// 实际对象
class RealSubject : public ISubject {
public:
virtual void process() {
// ...
}
};
// 代理对象
class SubjectProxy: public ISubject {
public:
virtual void process() {
// 对RealSubject的一种间接访问
// ....
}
};
// 客户代码
class ClientApp {
private:
ISubject* subject;
public:
ClientApp() {
subject = new SubjectProxy();
}
void DoTask() {
//...
subject->process();
//....
}
};

具体代理模式的实现方式差别很大,有些可能对单个对象做细粒度的控制,有些可能对组件模块提供抽象代理层,在架构层次对对象做代理。

---- 本文结束 知识又增加了亿点点!----

文章版权声明 1、博客名称:LycTechStack
2、博客网址:https://lz328.github.io/LycTechStack.github.io/
3、本博客的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系博主进行删除处理。
4、本博客所有文章版权归博主所有,如需转载请标明出处。