目前编程中最热门的新概念是面向特征的编程(aspect-oriented programming,aop)。aop曾经主要用于学术和研发机构,如今开始进入主流开发领域。与oop在面向过程的编程方法基础上的改进一样,aop是在面向对象编程(oop)方法的基础上进行改进而来的一种创新的软件开发方法。oop引入了封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。然而, oop在处理范围扩展到一些无关对象的公共行为方面达不到要求。也就是说,oop允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如,看一下日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切(cross-cutting)代码,这也是aop编码方法产生的原因。
aop提供一种提取横切代码的方法,这种横切代码横跨各个对象层次,但与它所跨越的对象代码在功能上没有相关性。aop不是在类中嵌入横切代码,而是允许你将横切代码提取到一个单独的模块中,然后在需要的时候动态地应用该代码,这个单独的模块叫做一个“特征代码”(“aspect”,也译作“标记”)。通过在你的对象模型中需要应用横切代码的地方定义特定的位置–切入点(pointcut)–来实现动态的应用横切代码。在运行或编译时,根据你的aop框架,横切代码被插入指定的切入点。本质上说,aop允许你在对象中引入新功能,而对象无需了解所引入的功能。这是一个非常有用的概念。
阅读(2077) | 评论(0) | 转发(0) |