什么是代理模式
代理模式是对象的结构模式,为其他对象提供一种对象以控制对这个对象的访问。
代理模式的结构图如下:(源自大话设计模式)
Subject:定义了RealSubject和Proxy的公共接口,这样在任何使用RealSubject的地方都可以使用Proxy
代理模式就是在代理类中持有RealSubject的对象句柄,这样调用接口时,都执行RealSubject的对应方法,以达到封装内部控制对象的目的并起到代理的作用。
代理模式的应用
第一种是远程代理,也就是为一个对象在不同的地址空间(跨机器)提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
第二种是虚拟代理,是根据需要创建开销更大的对象,通过它来存放实例化需要很长时间的真实对象。 比如打开网页是的图片一步加载,加载之前网页中预留的图片的白框就是图片的代理。
第三种是安全代理,用来控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候。
第四种是智能指针,他是真实对象的一种代理。