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
阅读全文
0 0
- AOP-纵向横向的区分和基本概念
- Oracle的表结构:纵向和横向
- Oracle的表结构:纵向和横向
- Oracle的表结构:纵向和横向
- 横向和纵向的数据库分表
- 横向和纵向的ViewPage,引导页
- DirectionalViewPager支持横向和纵向的ViewPager
- DirectionalViewPager支持横向和纵向的ViewPager
- DirectionalViewPager支持横向和纵向的ViewPager
- 横向越权和纵向越权
- 纵向拆分和横向拆分
- 控制横向和纵向滚动条的显隐
- 网页中常用的简单横向和纵向菜单
- 横向滑动和纵向滑动互不受影响的ScrollView
- 技术人员的横向纵向发展
- 系统的横向结构和Websharp AOP
- 系统的横向结构和Websharp AOP
- javascript 横向和纵向滚动效果
- shuffle过程--mapreduce
- 事务里面发布事件
- Ubuntu环境下配置AMP(Apache 2.4 + MySQL 5.7 + PHP7.1)
- java jvm gc 垃圾回收机制 总结
- 基于bitshares的身份认证系统设计思路
- AOP-纵向横向的区分和基本概念
- CUDA学习三:线程协作
- 带花树算法浅谈&&bzoj4405: [wc2016]挑战NPC
- FFmpeg源码剖析-通用:get_input_packet()
- curl和elinks访问中遇到问题及解决办法
- python自带的sum()函数和numpy库中的sum()函数的区别
- Ant中build.xml详细部署
- Java多线程(九):Condition-线程通信更高效的方式
- Odoo只读字段在onchange方法中被改变后不会保存到数据库