面向切面编程示例:模式与复用
在软件开发中,面向切面编程(AOP)为解决横切关注点提供了强大的手段。本文将深入探讨 AOP 中的模式与复用,以持久化为例,展示如何将横切行为封装为可复用的方面,并应用到不同的场景中。
1. 调用与执行指示符的区别
在使用 AOP 时, call()
和 execution()
指示符是常见的讨论点。它们与 within
/ withincode
等指示符的交互方式有所不同。
- call()
指示符 :当调用者对被调用对象进行方法调用时匹配,且在被调用方法执行之前匹配,其作用域直到方法返回或抛出异常才结束。
- execution()
指示符 :在方法开始执行时匹配,并持续到最后一条语句执行之后。如果 call()
指示符匹配成功, execution()
指示符的作用域总是在 call()
指示符的作用域之内。
2. 使用 this()
和 target()
当 call()
和 execution()
指示符与 this()
和 target()
结合使用时,会有四种组合及可能的结果,