静态代理模式
Subject:程序中的业务接口,定义了相关的业务方法
RealSubject:实现了Subject接口的业务实现类,其实现中完成了真正的业务逻辑。
Proxy:代理类,实现了Subject接口,其中会持有一个Subject类型的字段指向一个RealSubject对象。
Proxy代理能够控制使用方对RealSubject对象的访问,或者在执行业务逻辑前执行统一的预处理逻辑,在执行业务逻辑之后执行统一的后置处理逻辑。
目标接口
public interface Subject {
void sayHello();
}
目标类
public class RealSubject implements Subject{
@Override
public void sayHello() {
System.out.println("hello, I am RealSubject");
}
}
代理类
public class CommonProxy implements Subject {
private Subject sub;
public CommonProxy(Subject subject){
sub = subject;
}
@Override
public void sayHello() {
System.out.println("before do..."); // 在执行业务逻辑之前的预处理逻辑
sub.sayHello();
System.out.println("after do..."); // 在执行业务逻辑之后的后置处理逻辑
}
}
测试
public class Test {
public static void main(String[] args) {
Subject subjectProxy = new CommonProxy(new RealSubject());
subjectProxy.sayHello();
}
}