4.7 PROXY(代理)对象结构型模式
为其他对象提供一种代理以控制对这个对象的访问;代理对象充当目标对象的接口,这样客户端就可以通过代理对象间接地访问目标对象,从而在访问过程中实现一些额外的控制、功能或处理。
1.保护代理(Protection Proxy): 控制对真实对象的访问权限,允许或拒绝对真实对象的请求。例如,访问控制、身份验证等功能可以通过保护代理来实现;
2.虚拟代理(Virtual Proxy): 控制对目标对象的访问,延迟目标对象的创建或加载,以减少系统开销。例如,加载大型图像或复杂对象时,可以使用虚拟代理进行懒加载,只有在需要时才真正创建目标对象。
3.远程代理(Remote Proxy): 在不同地址空间中代理对象,使得可以在不同的系统中进行远程通信。远程代理允许客户端访问位于远程服务器上的对象,而不必了解底层的网络细节。
4.智能指引(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作。对指向实际对象的引用计数,这样当该对象没有引用时,可以自动释放它。在访问一个实际对象前,检查是否已经锁定了它,以确保其他对象不能改变它。
为其他对象提供一种代理以控制对这个对象的访问;代理对象充当目标对象的接口,这样客户端就可以通过代理对象间接地访问目标对象,从而在访问过程中实现一些额外的控制、功能或处理。
1.保护代理(Protection Proxy): 控制对真实对象的访问权限,允许或拒绝对真实对象的请求。例如,访问控制、身份验证等功能可以通过保护代理来实现;
2.虚拟代理(Virtual Proxy): 控制对目标对象的访问,延迟目标对象的创建或加载,以减少系统开销。例如,加载大型图像或复杂对象时,可以使用虚拟代理进行懒加载,只有在需要时才真正创建目标对象。
3.远程代理(Remote Proxy): 在不同地址空间中代理对象,使得可以在不同的系统中进行远程通信。远程代理允许客户端访问位于远程服务器上的对象,而不必了解底层的网络细节。
4.智能指引(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作。对指向实际对象的引用计数,这样当该对象没有引用时,可以自动释放它。在访问一个实际对象前,检查是否已经锁定了它,以确保其他对象不能改变它。