传统上, 程序的结构是静态的. 定义了一个类, 它的成员变量和成员函数就是确定的了,定义了一个函数, 它的具体实现也是确定的.
传统程序设计主要定义了一些固化的规则来规范这些确定性组分的组合关系,如类继承体系所表达的推理关系. 而AOP是一种动态代码织入技术
AOP就像是一把锋利的砍刀, 我们用它从最终所期望的程序结构中随意的砍下一部分来, 起个名字,就叫Aspect吧.
实际上AOP技术本身并没有限定程序中哪些部分可以作为Aspect, 这种技术本身并不保证你可以抽象得出真正有价值的Aspect,
它只是一种纯粹的程序结构操纵技术而已.
\
类似于 \○
←□→
11\
\
一个人被从身体的中间这么喀嚓一下下,成了一个切面;这个切面可不是固定的;再哪个部位都能喀嚓那么一下;并且这个切面就有了一个名字叫做“aspect”
我们可以对这个切面进行统一的管理,集中的权限控制,看看谁能够摸一下这砍完后,这个血淋淋的一个切面;
对砍完后的每个切面分别控制,然后最后组合起来;
通过切面,我们可以将系统中各个不同层次上的问题隔离开来,实现统一集约式处理。各切面只需集中于自己领域内的逻辑实现(这句话不能理解)。这一方面使得开发逻辑更加清晰,专业化分工更加易于进行;另一方面,由于切面的隔离,降低了耦合性,我们就可以在不同的应用中将各个切面组合使用,从而使得代码可重用性大大增强