目录
代理模式 Proxy
- 静态代理
- 动态代理
- Spring AOP
一、静态代理 记录坦克移动时间问题
Version 1 修改源代码植入记录时间逻辑
Version 2 聚合方式实现代理
Version 3 各种类型的代理
Version 4 静态代理
Proxy实现了moveable接口,可以实现代理的嵌套
二、动态代理
New Proxy Instance时传入的是哪个参数
- ClassLoader 被代理的对象,此处为Tank对象
- interfaces数组 实现的接口数组,此处为Moveable
- InvocationHandler对象,被代理的方法在被调用的时候需要实现的逻辑
main()方法中只是调用了move()方法,但是可以看到LogHandle中的invoke()方法被触发调用
应用动态生成的Proxy类中自动生成了move()方法,当中调用了类似LogHandler()中的invoke方法
此处
Object proxy 对应动态生成的代理对象m, Method method 对应调用的方法move()
三、JDK动态代理
真实运行时会有一个Proxy Cache池,检查相应需要的Proxy是否已经存在,存在直接使用,如还未存在则Build该Proxy. ProxyGenerator