![](https://img.haomeiwen.com/i9149634/c45525bd978e69c1.png)
实现类和代理类都需要实现该接口。
// 接口
public interface Subject{
public void request();
}
// 真实类
public class RealSubject implements Subject{
@Override
public void request(){ System.out.println("real request"); }
}
// 代理类
public class Proxy implements Subject{
// 代理类一定要引入真实类,因为代理对象不会做真正的业务逻辑,所以需要调用真实类的业务逻辑方法
private RealSubject realSubject;
public Proxy(RealProduct realSubject){ this.realSubject = realSubject; }
@Override
public void request(){
// 这样就实现了在实际request之前和之后的操作
before();
realSubject.request();
after();
}
}
// 客户
public class Client{
public static void main(String[] args){
Subject subject = new Proxy(new RealSubject());
subject.request();
}
}
缺点:
- 在程序运行前,proxy代理类的.class就已经生成
- 需要为每个方法加一个代理,这样如果方法都要before after操作,那每个方法代理也会存在很多冗余代码。
所以静态代理基本不用。
网友评论