1.代理模式分类:
1.静态代理:接口, 接口实现,接口实现代理对象(传参 ) 。
代理类和各种实现类 具有相同的祖宗==》猴, 你和代理类具有相同的方法,就可以让代理帮你了,代理买的方法中嵌套你的实现。
2.动态代理:1.JDK实现 (针对所有有接口的实现类)2.CGlib (code generation library) 3.JavaAssist 修改字节码类
1.JDK实现
Proxy.newInstance(ClassLoader classloader, Class<?>[] interfaces,InvocationHandler invocationhandler)
classloader:代理对象 创建在哪个类加载器上《===》代理对象在哪个类加载器上加载
interfaces:代理对象 要实现的接口,实现了就可以拥有接口上的方法===或者说获取接口的方法列表 传递给 InvocationHandler的Method
InvocationHandler:代理对象 代理的 接口方法 的处理交由invocationHandler对象处理。
生成 与代理类相同接口的 代理类对象
创建InvocationHandler接口的实现类,实现invoke方法
class Demo implements InvocationHandler{
public Object invoke(Object proxy,Method method,Object[] args){ };
参数proxy:代表Proxy.newInstance()方法内部创建的代理对象。真实的代理对象;
method:是被代理接口的方法
args:是参数数组。
}