AOP-纵向横向的区分和基本概念

来源:互联网 发布:c语言 根号2 编辑:程序博客网 时间:2024/05/29 15:26

切点

小学时候接触过横切面,纵切面,针对几何体从某个方向做切,然后去考察切割之后的几何特征。
中学的几何学连续的曲线 都有切线,切线做成时候需要以切点为基准。
比如  圆 , 给一个切点就可以做一条切线。

直观的理解就是一个  曲线(点的集合) 通过切点  可以得到另外一个 曲线(点的集合)
当然aop中的切点本身就是一个集合,是在程序运行过程中处于阶段点的集合。
例如方法的调用就是一个阶段点,但是程序运行的时候可是不有一系列的调用,因此会产生一系列的阶段点的。
aop中将这些阶段点称为 连接点  Join Point 
将来进行注入的位置就是这个  JoinPoint

==》  集合  ---切点---集合
编程中的切点我们就是为了从一个集合得到另外一个集合,切点的意义更像是一个  特征值,通过特征值我们去筛选拦截得到另外一个符合特这值的集合.
如果我们将工程中的bean都认为是集合中的元素,那么我们的切点就是可以从这些集合中能进行筛选的特征条件,
所得到的集合也就是切面,然后呢我们aop的核心就是要处理这些被筛选出来的切面的。
很明显这种方式没有了层次的划分
如果将系统的服务  分为  controller , service , dao 三个层次,那么这三个处于集合中是没有什么层次以及依赖调用关系的。


纵向


从接口实现以及调用来看他们三者之间是呈现一种纵向的方式的,controller处于最顶层,中间是sevice , 底层是dao  
(严格按照这种模式进行编写,当然非要在controller中使用dao没错,但是没有了我们遵从的模式架构了)
这种纵向是按照分层模式导致出现的,很明显 继承扩展和面向接口调用都是处于纵向的编程方向的。


横向


从方向上看,AOP是面向横向的,因为所有的bean都将处于一个集合内部,我们通过切点从这些元素中抽出符合特这的元素然后组成切面
称aop为面向数学集合的编程可能更形象一些,当然会和Java中的集合混淆。


Advice

通过切点得到切面之后,我们可以给这些切面中的元素做一些 统一性质的动作。
比如aop中常见的日志打印,事务管理等
因此需要专门提供advice的bean







原创粉丝点击