横切关注点

横切关注点指的是一些具有横越多个模块的行为,使用传统的软件开发方法不能够达到有效的模块化的一类特殊关注点

面向切面的程序设计(AOP)中,横切关系是程序中和其他模块有联系的‘切面’。这些关系在程序模块化的设计和实现中无法被自然地分解到模块中,导致或代码过于分散,或代码冲突,或者两者都有。

举个例子来说,编写一个处理医生记录的app,这些记录的索引是核心模块,同时关于存储记录或用户信息的数据的历史日志,或者登录的验证系统,由于和app中大部分模块都有关系所以成为了‘横切关系’。

背景

横切关系是那些和程序中大部分模块都有联系的部分,它们形成了切面开发的基础单元。这样的横切关系部分不能自然得适配面向对象编程理念和面向过程编程理念。

程序内那些冲突或者内部依赖过度一般都和横切关系有直接联系,由于过程性和功能性编程语言的结构完全是步骤化调用,也就没有语法可以同时进行功能实现和横切关系处理,这样一来,解决横切关系的代码就在程序中分散或者重复执行,最终导致了程序模块化的丧失;

面向切面的程序设计(AOP)的目的是将这些横切关系封装进切面来保持程序的模块化,也就可以保持自然得模块独立性和处理横切关系代码的可复用性。通过这些对横切关系的设计处理,作为对于面向对象编程的一个补充,软件工程的模块化和维护简单化的优势仍然可以保持。