1.代理模式定义
为其他对象提供一种代理一控制这个对象的访问。
代理模式是一种基本的设计技巧。许多模式,如策略模式,状态模式,访问者模式本质上是特殊场合采用的代理模式。代理模式可以提供非常好的访问控制。代理模式通用类图
角色定义
(1)Subject抽象主题
抽象主题类是抽象类或接口,普通业务类型定义。
(2)RealSubject具体主题
被代理类,是业务逻辑具体执行者。
(3)Proxy代理主题
代理类,它负责对真实角色的应用,吧所有抽象主题类定义的方法限制委托给真实主题角色实现(RealSubject),并且在真实主题角色处理完毕前后做预处理和善后处理。代码实现
public interface Subject { void request(); }
public class RealSubject implements Subject {
public void request() {
//业务逻辑
}
}
public class Proxy implements Subject {
//要代理的实现类
private Subject subject = null;
public Proxy() {
this.subject = new Proxy();
}
//通过构造函数传递代理者
public Proxy(Object... objects) {
}
//实现接口定义的方法
public void request() {
this.before();
this.subject.request();
this.after();
}
//预处理
public void before() {
}
//后处理
public void after() {
}
}
代理模式优点
(1)职责清晰
真实角色就是实现世界业务逻辑,不关心非本职业务。
(2)高拓展性
具体主题角色可以随时变化,只要他实现了接口,代理类都可以不做任何修改地使用。