前面发过代理模式的基本概念。
http://topic.csdn.net/u/20120903/18/5bbb977b-b805-4316-aba0-594445206e51.html
下面来说说AOP的一些基本,当温习一下吧。
AOP:是在一个在切面上编程, 弥补OOP不足的一种编程思想, 可以在顺序执行的程序中,
插入某些特殊的逻辑来实现一些特殊的功能
总体来说:OOP提高了代码的重用,设计模式解决了模块之间的耦合,AOP解决了某个模块内部的变化问题。
AOP把软件系统分为两部分:
1、核心关注点(业务处理为主)
2、横切关注点(与业务无关如日志等)
核心思想:将商业逻辑同对其提供支持的通用服务进行分离;
在一个服务的流程中插入与业务逻辑无关的系统服务逻辑(例如Logging、Security),这样的逻辑称为Cross-cutting concerns(前一篇帖子中提到)
* 切面(Aspect)
将散落于各个业务逻辑之中的Cross-cutting concerns收集起来,设计成各个独立可重用的对象,这样的对象称之为Aspect。* 通知(Advice)
Aspect当中对Cross-cutting concerns的具体实现称之为Advice。Advice中包括了Cross-cutting concerns的行为或所要提供的服务。* 连接点(Joinpoint)
Advice在应用程序执行时加入业务流程的点或时机。* 切入点(Pointcut)
定义了感兴趣的Jointpoint,当调用的方法符合Pointcut表达式时,将Advice织入至应用程序上提供服务*目标对象(Target Object)
一个Advice被应用的对象或目标对象,如前面的HelloSpeaker就是LogHandler中Advice的Target*引入(Introduction)
在不修改原程序代码的情况下,为现存的类引入新的方法或行为* AOP代理(AOP Proxy)
是由AOP框架创建的对象,用来实现切面契约(包括通知方法执行等功能)* 织入(Weave)
Advice被应用到对象之上的过程称之为织入(Weave)这里是关系图: