曾遇到“AOP与动态代理有什么联系”的问题,现把个人观点整理如下:
我觉得,动态代理是AOP的主要实现手段之一,AOP是动态代理的一种应用深化
AOP是一种思想,或者是方法论,类似OOP,是OOP的有力补充;
OOP侧重于主要业务功能设计(一般关注点);
AOP侧重于横切关注点(事务、日志、安全等,贯穿于多个模块的功能)
小分析:
OOP在横切关注点问题的不足是:1)代码混乱 2)代码分散
AOP很好的解决了这个问题,并且可以很好的解决“侵入问题”。
AOP的实现,必然要求对截获的对象进行代理,这个地方无疑要用的是动态代理机制。
如果非要说谁是谁的实现手段,我更倾向于AOP主要应用了动态代理,动态代理是AOP的实现手段。
附记:
记得一个文章提及:
AOP是设计模式的延续;
GoF侧重于接口、抽象函数来解除耦合;却对对象的内部无能为力。
AOP却恰恰从对象的内部着手,实现调用者和被调用者的分离。
常思考之,甚是!