为她人做嫁衣裳
1.定义
代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
2.类图
- Subject 类定义了RealSubject类和Proxy类的公共接口,这样使得可以在需要使用RealSubject的地方使用Proxy
public abstract class Subject{
public abstract void Request();
}
- RealSubject 类定义了Proxy类代理的具体实例
public class RealSubject extends Subject{
public void Request(){
// function body
}
}
- Proxy 类维护一个真实实例的引用,并提供Subject同样的接口,这样使得代理可替代实例
public class Proxy extens Subject{
RealSubject realSubject; //指向真实实例的引用
public void Request(){
if(realSubject == null){
RealSubject realSubject = new RealSubject();
}
realSubject.Request();
}
}
- Client 类
public class Client{
public static void main(String[] args){
Proxy proxy = new Proxy();
proxy.Request(); //代理执行真实实例的行为
}
}
3.代理模式的应用
- 1.远程代理,为一个位于不同的地址空间的对象提供一个本地的代理对象。
- 2.虚拟代理(Virtual Proxy)根据需要创建开销很大的对象。如果需要创建一个资源消耗较大的对象,先创建一个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。
- 3.安全代理,用来控制真实对象的访问权限。
- 4.智能指引,是指调用真实的对象时,代理处理另外的事。