目录
[显示]

1.摘要

Proxy模式为其他对象提供一种代理,以控制对这个对象的访问。它可以提供引用计数、延迟加载、访问控制等特性。

2. 针对问题

假如说我需要对某个类型的调用做一些控制,例如载入一副图片的步骤可以分为三步:

假如说load这一步需要的时间很长,而draw不一定在什么时候调用(比如word文档中的图片要浏览到图片位置时才显示),那么自然会考虑可以在不改变程序结构的前提下把load这一步推迟到draw调用,以节约初始化的时间。这种情况适合于Proxy模式。

3. 介绍

为其他对象提供一种代理以控制对这个对象的访问。
Proxy模式可以分为以下4类:
1、远程代理:为一个对象在不同的地址空间提供局部代表。
2、虚代理:延迟加载大对象。
3、保护代理:控制对原始对象的访问。
4、智能引用:引用计数、单例、锁等。

4. 实现

Proxy模式的静态图如下:

其中:
1、Proxy需要提供与Subject相同的接口。
2、C++中可以重载->操作符以实现对RealSubject的访问,例如:

3、Java中可以使用InvocationHandler实现动态代理类。

5. 特点

1、Proxy模式关注对原有对象访问的控制,并不会改变接口的声明。
2、Proxy模式与原有对象是平级的,不会增加接口的层次。

6. 相关文章

设计模式总结

7. 参考文章

  1. 《设计模式_可复用面向对象软件的基础》