(1)背景
随着软件系统规模快速扩大,以日志、安全等为典型代表的非功能性属性在常规面向对象开发中难以有效统一处理,给软件理解与维护带来较大障碍。
(2)面向方面的程序设计(Aspect Oriented Progianuning, AOP)
在1997年欧洲面向对象编程大会上提出。
作为面向对象方法OOP的有效补充,AOP把系统关注点分为核心关注点与横切关注点两类。
核心关注点:指业务处理中的主要业务逻辑和流程;
横切关注点:是分布在各核心关注点内的共享关注点,如日志、安全等。
(3)AOP发展
AOP思想己被引入了需求分析、代码实现、测试维护等各个阶段,并衍生出面向方面软件开发(Aspect Oriented Software Development,AOSD)、面向方面需求工程(Aspect Oriented Requirement Engineering, AORE)等多个方向。出现了以AspectJ、AspectC及AspectC++等为代表的面向方面程序设计语言。
AspectJ是目前使用得最为广泛的AOP语言。