代理模式
一.静态代理。 静态代理常用的如:三层架构。 缺点是不符合开闭原则。 二.动态代理 1.JDK动态代理 (实现InvocationHandler接口,实现invoke方法,被代理的类需要集成一个接口) Proxy是一个工具类,实际上的作用就是动态生成字节码并编译执行新生成的类。 这里传入的clzz.getInterfaces() 就是为了获取到接口并且为新生成的类提供生成方法。 原理:动态生成字节码生成一个新的类,$Proxy类,$Proxy实现了被调用类的接口,通过反射,生成接口里所有的方法,调用目标方法其实就是在调用$Proxy这个新生成的类的方法,所以JDK动态代理一定要实现一个接口。 可以通过invoke()//代理,before()//代理前,after()//代理后 ,进行对代理方法的统一增强,有点类似Spring的AOP。 2.CGLib动态代理: 来源: https://blog.csdn.net/fox_233/article/details/99460291