AOP面向切面和OOP面向对象的简单理解比较
来源:互联网 发布:死神来了 游戏 知乎 编辑:程序博客网 时间:2024/05/29 18:15
【转】
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
AOP与OOP是面向不同领域的两种设计思想。
OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。
AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。
我们可以单单从上面的字面上来理解AOP和OOP的话,用下面的理解也不为过:
OOP实际上是对对象的属性和行为的封装,而AOP对于这点就无从谈起,但是AOP是处理某个步骤和阶段的,从中进行切面的提取,也就是说,如果几个或更多个逻辑过程中,有重复的操作行为,AOP就可以提取出来,运用动态代理,实现程序功能的统一维护,这么说来可能太含蓄,如果说到权限判断,日志记录等,可能就明白了。如果我们单纯使用OOP,那么权限判断怎么办?在每个操作前都加入权限判断?日志记录怎么办?在每个方法里的开始、结束、异常的地方手动添加日志?所有,如果使用AOP就可以借助代理完成这些重复的操作,就能够在逻辑过程中,降低各部分之间的耦合了。二者扬长补短,互相结合最好。
下面详细了解一些AOP的概念:
- 方面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的Advisor或拦截器实现。
- 连接点(Joinpoint):程序执行过程中明确的点,如方法的调用或特定的异常被抛出。
- 通知(Advice):在特定的连接点,AOP框架执行的动作。各种类型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器链。
- 切入点(Pointcut):指定一个通知将被引发的一系列连接点的集合。AOP框架必须允许开发者指定切入点,例如,使用正则表达式。
- 引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。
- 目标对象(Target Object):包含连接点的对象,也被称作被通知或被代理对象。
- AOP代理(AOP Proxy):AOP框架创建的对象,包含通知。在Spring中,AOP代理可以是JDK动态代理或CGLIB代理。
- 编织(Weaving):组装方面来创建一个被通知对象。这可以在编译时完成(例如使用AspectJ编译器),也可以在运行时完成。
阅读全文
0 0
- AOP面向切面和OOP面向对象的简单理解比较
- AOP面向切面编程和OOP面向对象编程
- "面向切面(AOP)"与"面向对象(OOP)"
- 面向切面(AOP)"与"面向对象(OOP)"
- "面向切面(AOP)"与"面向对象(OOP)"
- 面向切面(AOP)"与"面向对象(OOP)
- "面向切面(AOP)"与"面向对象(OOP)"(图)
- AOP面向切面的理解
- Spring AOP-->面向切面编程简单理解和简单使用
- 简单理解AOP(面向切面编程)
- 简单理解AOP(面向切面编程)
- 简单理解AOP(面向切面编程)
- 简单理解AOP(面向切面编程)
- 简单理解AOP(面向切面编程)
- AOP面向切面编程思想的原理(简单理解)
- 面向切面编程(AOP)的理解
- 面向切面编程(AOP)的理解
- 面向切面编程(AOP)的理解
- 游戏开发硬货准备笔记(一)
- flume kafka测试环境配置 windows
- 12cR2多租户下隔离PDB磁盘I/O
- 通过Docker部署Maven私服和使用
- Hbuilder app开发之app启动图片
- AOP面向切面和OOP面向对象的简单理解比较
- CentOS安装后设置ip
- 数据库常用语法
- A联合布局之Tab导航
- request接收表单提交中文参数乱码问题
- iOS NSPredicate 使用详解
- 读取网络上的json文件
- ARM_4412_蜂鸣器
- 本机连接远程Oracle