罗浩的技术专栏 Android and Python and C++ Coder

AOP介绍


AOP(Aspect-Oriented Programming,面向方面编程),可以解决面向对象编程中的一些问题, 是OOP的一种有益补充。面向对象编程中的继承是一种从上而下的关系,不适合定义从左到右的横向 关系,如果继承体系中的很多无关联的对象都有一些公共行为,这些公共行为可能分散在不同的组件, 不同的对象之中,通过继承方式提取这些公共行为就不太合适了。使用AOP还有一种情况是为了提高 程序的可维护性,AOP将程序的非核心逻辑都“横切”出来,将非核心逻辑和核心逻辑分离,使我们能 集中精力在核心逻辑上。

| |
—————- Logging
| |
Cross-cutting concerns
| |
—————- Security
| |
业务流程1 业务流程2

图1-1 AOP通过“横切”分离关注点

在上图1-1中,每个业务流程都有日志和权限验证的功能,还有可能增加新的功能,实际上我们只关心 核心逻辑,其他的一些附加逻辑,如日志和权限不需要关注,这时,就可以将日志和权限等非核心逻辑 “横切”出来,使核心逻辑尽可能的保持简洁和清晰,方便维护。这样“横切”的另一个好处是,这些公共 的非核心逻辑被提取到多个切面中了,使它们可以被其它组件或对象复用,消除了重复代码。

AOP把软件系统分为了两个部分:核心关注点和横切关注点。业务处理的流程是核心关注点,与之关系不 大是横切关注点。横切关注点的一个特点是,它们经常发生在核心关注点的多处,而各处基本相似,比如 权限认证、日志处理、事务处理。AOP的作用在于分离系统中的各种关注点,将核心关注点和横切关注点 分离开来。


上一篇 C++11右值引用

下一篇 git mv 与 mv

Comments

Content