java的静态代理
解决问题:在多个模块要插入一段功能,比如,在不同业务处理模块中,都需要检查用户是否登录,如果不使用代理的话,每增加一个模块,就需要增加很多代码。
比如,除了判断是否登录,如果还需要增加一个记录日志的功能,那么每个模块都需要重新增加一个函数。
下面我们利用静态代理的功能来解决这个需求。
功能函数接口
package itbuluoge.proxy;public interface ICompent {
public void bussiness1();
public void bussiness2();
public void bussiness3();
}
代理类
public class ProxyCompent implements ICompent{
private ICompent ic;
public ProxyCompent(ICompent ic)
{
this.ic=ic;
}
public void validateUser()
{
System.out.println("验证用户...");
}
public void bussiness1() {
// TODO Auto-generated method stub
validateUser();
ic.bussiness1();
}
public void bussiness2() {
// TODO Auto-generated method stub
validateUser();
ic.bussiness2();
}
public void bussiness3() {
// TODO Auto-generated method stub
validateUser();
ic.bussiness3();
}
}
被代理类
public class Compent implements ICompent{
public void bussiness1() {
// TODO Auto-generated method stub
System.out.println("业务1");
}
public void bussiness2() {
// TODO Auto-generated method stub
System.out.println("业务2");
}
public void bussiness3() {
// TODO Auto-generated method stub
System.out.println("业务3");
}
}
测试类
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ProxyCompent myProxy=new ProxyCompent(new Compent());
myProxy.bussiness1();
myProxy.bussiness2();
myProxy.bussiness3();
}
}
输出结果
我们可以看到,如果我们需要在很多个加入共同的函数的时候,只需要在代理类中增加即可。而且可以看出,代理类中只有自己的业务逻辑,没有其他的任何服务,服务都定义在被代理类本身。
Spring入门第三讲 Spring中的代理 静态代理 动态代理(JDK代理) cglib代理(字节码增强) Spring中的AOPspring的静态代理和动态代理
java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总spring的静态代理和动态代理
java中的静态代理、jdk动态代理和cglib动态代理jdk cglib动态代理
Java JDK中的静态代理、动态代理&Cglib动态代理jdk cglib动态代理
静态代理、动态代理,以及动态代理的调用说明静态代理和动态代理
#yyds干货盘点# 设计模式之静态代理,jdk动态代理,cglib动态代理的区别jdk静态代理和动态代理