看Spring中的AOP发现很多资料上有先引入动态代理来慢慢引入Spring的AOP,AOP实现的策略有Dynamic Proxies 
请问动态代理(Dynamic Proxies)和我们说的代理模式是一回事吗? 
如果按照AOP技术帮助我们解决问题的角度——不破坏原有代码基础上增加其他功能的话,油漆工模式(Decorator)和适配器模(Adapter)式也可以实现 
为什么要用代理模式呢? 
感觉 Dynamic Proxies不是代理模式,为什么有些资料上都说是代理模式呢? 
谢谢了!

解决方案 »

  1.   

    我想问的是,Spring的代理机制,是不是通过代理模式来实现的,不管是动态代理,还是静态代理
      

  2.   

    是动态代理,大概过程如下:
          创建动态代理 :
               前提:目标对象实现了一个接口.
               
               target ----> A
               
               Proxy.newProxyInstance();
                          |- 目标对象是谁 ( 为那个类创建代理 )
                              |- 目标对象的类加载器 : target.getClass().getClassLoader()
                          |- 目标对象实现了什么接口 ( 创建出来的代理对象是什么类型 )
                              |- target.getClass().getInterfaces() 
                          |- 需要在目标对象身上增加什么功能.
                               |- InvocationHandler 的实现类,把要添加的附加功能编写在
                      这个实现类中
      

  3.   

    感觉AOP的作用,是不破坏原来代码基础上来增加新的功能
    正如楼上这位先生给出的例子,要做目标对象上增加新功能
    油漆工模式也是用来增加新功能的,为什么不选用油漆工模式呢?