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