代理模式的定义
代理模式是在不改变原始类代码的情况下,通过引入代理类来给原始类添加附加功能
代理模式的实例
-
Subject抽象主题角色
抽象主题类可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求。
-
RealSubject具体主题角色也叫做被委托角色、被代理角色。它才是冤大头,是业务逻辑的具体执行者。
-
Proxy代理主题角色
也叫做委托类、代理类。它负责对真实角色的应用,把所有抽象主题类定义的方法限制委托给真实主题角色实现,并且在真实主题角色处理完毕前后做预处理和善后处理工作。
package structuralDesgin.proxyPattern;
/**
* 抽象主题类
*/
public interface Subject {
public void request();
}
package structuralDesgin.proxyPattern;
/**
* @author cuckooYang
* @create 2020-08-06 17:29
* @description 真实主题类
**/
public class RealSubject implements Subject {
//实现方法
@Override
public void request() {
//业务逻辑处理
}
}
/**
* @author cuckooYang
* @create 2020-08-06 17:30
* @description 代理类
**/
public class Proxy implements Subject {
//要代理实现的类
private Subject subject = null;
//默认被代理类
public Proxy(Subject subject){
this.subject = subject;
}
//实现接口中定义的方法
@Override
public void request() {
this.before();
this.subject.request();
this.after();
}
//预处理
public void before(){
//do Something
}
//善后处理
public void after(){
//do Something
}
}