java动态代理

113 阅读1分钟

代理模式

代理模式是一种设计模式,有三个条件,接口,实现接口的类,代理。即有一个行为,同时有一个类实现了这个行为,但是不能直接去访问这个类的行为,而是通过代理来访问他。代理的作用是为了增强,但实现的核心还是那个类。

Java静态代理

java静态代理是在编译就实现了,不利于扩展,针对每一种类都得写一个代理类

Java动态代理

代理类实现了InvocationHandler这个接口,其中实现invoke方法。 public Object invoke(Object proxy, Method method, Object[] args) 其中 调用method.invoke(实现类,args),通过反射的方式,前后都可以进行增强。 同时,通过proxy类的public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) 创建代理类,从而实现动态代理。