定义:
代理模式:为其他对象提供一种代理以控制对这个对象的访问。也叫做委托模式。它是一种基本的设计技巧。
涉及的三个角色
subject抽象主题角色
抽象主题类可以是抽象的类也可以是接口,是一个最普通的业务类型定义,无特殊要求。
realSubject具体主题角色
也可以叫做委托角色,被代理角色。它是冤大头,是业务逻辑的具体执行者。
Proxy代理主题角色
也可以叫做委托类,代理类。他负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。
抽象主题类
public interface Subject{
void request();
}
真实主题类
public class ReslSubject implements Subject{
public void request(){
}
}
代理类
public class Proxy implements Subject{
private Subject subject=null;
public Proxy(Subject object){
this.subject=object
}
public void request(){
this.before();
this.subject.reques();
this.after();
}
public void before(){
}
public void after(){
}
}
一个代理类可以代理多个委托者或者被代理者,因此一个代理类具体代理哪个真实主题角色,是由场景类决定的。当然,最简单的情况就是一个主题类和一个代理类。这是最简单的代理模式。
代理模式的优点:
职责清晰,高扩展性,智能化
静态代理 动态代理