静态代理
静态代理和JDK代理一样都是通过实现接口的方式实现代理模式
代理接口类
public interface mainFunction {
public String doOne();
public String doTwo();
}
业务类(实现代理接口)
public class Services implements mainFunction {
public String doOne() {
// TODO Auto-generated method stub
System.out.println("this is doOne function");
return "This is doOne";
}
public String doTwo() {
// TODO Auto-generated method stub
System.out.println("this is doTwo function");
return "This is doTwo";
}
}
静态代理类(实现代理接口)
public class Proxy implements mainFunction {
private Services services;
public Proxy(Services services){
super();
this.services=services;
}
public String doOne() {
// TODO Auto-generated method stub
return services.doOne()+" my name is TangYu";
}
public String doTwo() {
// TODO Auto-generated method stub
return services.doTwo()+" my name is jarrem";
}
}
测试类
public class MyTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Services services=new Services();
Proxy proxy=new Proxy(services);
System.out.println(proxy.doOne());
System.out.println(proxy.doTwo());
}
}
原理:
在静态代理类中获取业务类的数据并进行修改实现代理加强
缺点:1.代码冗余,业务类和代理类都要实现代理接口,当增加接口时,全部要修改,增加了代码复杂度
2.代理对象只服务于一种类型的对象,如果要服务多类型的对象。要为每一种对象都进行代理
即静态代理类只能为特定的接口(Service)服务。如想要为多个接口服务则需要建立很多个代理类。
来源:https://www.cnblogs.com/jarrem/p/5836602.html