代理模式学习
转自:https://www.runoob.com/design-pattern/proxy-pattern.html
1.例子
接口:
实体类:
代理类:
其数据成员包含了一个被代理的类对象。
通过代理类来实现对原类的访问,可以实现缓存。
2.作用
https://refactoringguru.cn/design-patterns/proxy
- 延迟初始化 (虚拟代理)。 如果你有一个偶尔使用的重量级服务对象,你无需在程序启动时就创建该对象, 可将对象的初始化延迟到真正有需要的时候。
- 访问控制 (保护代理)。 如果你只希望特定客户端使用服务对象, 这里的对象可以是操作系统中非常重要的部分, 而客户端则是各种已启动的程序 (包括恶意程序), 此时可使用代理模式。
- 本地执行远程服务 (远程代理)。 适用于服务对象位于远程服务器上的情形。
- 缓存请求结果 (缓存代理)。 适用于需要缓存客户请求结果并对缓存生命周期进行管理时, 特别是当返回结果的体积非常大时。 代理可对重复请求所需的相同结果进行缓存, 还可使用请求参数作为索引缓存的键值。【所有的代理其实都有缓存的功能,比如代理服务器。】