面向方面编程和 JBoss
作者:比尔.伯克,艾德里安.布洛克
05/28/2003
概述
面向方面编程(Aspect-Oriented Programming, AOP)是一个令人兴奋的新模式。就开
发软件系统而言,它的影响力将会和有 15 到 20 年的面向对象一样。面向方面编程和面向
对象编程不但不是互相竞争的技术而且是可以很好的互补。面向对象编程主要用于为同一
对象层次的公用行为建模。它的弱点是将公共行为应用于多个无关对象模型之间。而这恰
恰是 AOP 适合的地方。AOP 允许定义交叉的关系,那些关系应用于跨国分开的,非常不
同的对象模型。AOP 允许你层次化功能性而不是嵌入功能性,那使得代码有更好的可度性
和易于维护性。我喜欢认为 OOP 是自上而下的软件开发,而 AOP 是自左而右的软件开发,
它们是完全直交的技术,并且互相很好的补充。
在 OOP 的工具里是继承,封装和多态,而 AOP 的组件是通知/拦截器,导言,元数据
和 pintcuts.让我们看一下这些定义。
通知/拦截器
一个通知是一个逻辑,这个逻辑有特定的事件触发。它是行为,这个行为能够被插入
在调用者和被调用者之间,在一个方法调用者和实际的方法之间。通知是 AOP 真正的关键。
通知允许你去透明的应用一些事物,像日志和记录到一个存在的对象模型。
在 JBoss AOP 中,我们用拦截器是实现了通知。你能够定义拦截器,它拦截方法调用,
构造器调用和域访问。后面,我们将阐明怎样应用这些拦截器到一个存在的对象模型。
导言
导言是一个增加方法或者域到一个存在的类中的途径。它们甚至允许你改变当前存在
的类是显的接口,并且引入一个混合的类,这个类是实现了新的接口。导言允许你带入多
继承到一般的 Java 类。导言一个主要的用例是当你有一个方面,你想让这个方面有一个运
行时间借口时。你想应用你的方面跨越不同的对象层次,但是你仍然要应用开发者去能够
调用特定方面的 APIs.
Apple apple = new Apple();
LoggingAPI logging = (LoggingAPI)apple;
Apple.setLoggingLevel(VERBOSE);
导言能够是一个方法,它将一个新的 API 绑定到一个存在的对象模型。
元数据
评论0