代理模式
为其他对象提供一种代理,以控制对这个对象的访问
Subject类
package com.hml.proxy; public interface Subject { public void request(); }
RealSubject类
package com.hml.proxy; public class RealSubject implements Subject { public void request() { } }
ProxySubject类(包含被代理的对象)
package com.hml.proxy; public class ProxySubject implements Subject { private RealSubject subject; public void request() { if (subject == null) { subject = new RealSubject(); } subject.request(); } }
类图
代理模式应用
1、远程代理,为不同的对象在不同的地址空间提供局部代表,这样可以隐藏一个对象在不同的地址空间的事实。
2、虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象
3、安全代理,控制对真实对象的访问权限
4、智能引导,指当调用真实的对象时,代理处理另外一些事