代理Proxy

代理Proxy

  • 静态代理
  • 动态代理
  • Spring AOP
    代理Proxy

问题:我想它录坦克的移动时间
最简单的办法:修设代码,它录时间

问题2:如果无法改变方法源码呢?
用继承?(慎用继承,耦合度太高)
用代理(聚合)

代理有各种类型
问题: 如何实理代理的各种组合?继承?Decorator?

在move方法外面包一层记录日志,在日志方法外面包一层记录时间
矛盾:日志只能代理Tank,不能代理时间
代理的对象改成Movable型越来越像decorator

代理Proxy

v08:如果有stop方法需要代理…
如果想LogProxy可以重用,不仅可以代理Tank,还可以代理任何其他可以代理的类型Object
(毕竟日志记录,时间计算是很多方法都需要的东西),这时该怎么做?
分离代理行为(记录日志,时间,权限,事务)与被代理对象(现在只能代理movable)
使用jdk的动态代型

生成一个动态代理–>一个类
调用move方法,一定会调用InvocationHandler的invoke方法
代理Proxy
IOC + AOP
bean工厂 +灵活装配+动态行为拼接,成就spring在java框架中的一哥地位