代理Proxy
- 静态代理
- 动态代理
- Spring AOP
问题:我想它录坦克的移动时间
最简单的办法:修设代码,它录时间
问题2:如果无法改变方法源码呢?
用继承?(慎用继承,耦合度太高)
用代理(聚合)
代理有各种类型
问题: 如何实理代理的各种组合?继承?Decorator?
在move方法外面包一层记录日志,在日志方法外面包一层记录时间
矛盾:日志只能代理Tank,不能代理时间
代理的对象改成Movable型越来越像decorator
v08:如果有stop方法需要代理…
如果想LogProxy可以重用,不仅可以代理Tank,还可以代理任何其他可以代理的类型Object
(毕竟日志记录,时间计算是很多方法都需要的东西),这时该怎么做?
分离代理行为(记录日志,时间,权限,事务)与被代理对象(现在只能代理movable)
使用jdk的动态代型
生成一个动态代理–>一个类
调用move方法,一定会调用InvocationHandler的invoke方法
IOC + AOP
bean工厂 +灵活装配+动态行为拼接,成就spring在java框架中的一哥地位