针对问题

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

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

介绍

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

实现

Proxy模式的静态图如下:

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