AOP: (Aspect Oriented Programming) 面向切面编程。是目前软件开发中的一个热点,也是Spring框架中容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。

AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。OOP(面向对象编程)针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。 而AOP则是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。这两种设计思想在目标上有着本质的差异。

     举个简单的例子,对于“雇员”这样一个业务实体进行封装,自然是OOP的任务,我们可以为其建立一个“Employee”类,并将“雇员”相关的属性和行为封装其中。而用AOP设计思想对“雇员”进行封装将无从谈起。
同样,对于“权限检查”这一动作片断进行划分,则是AOP的目标领域。而通过OOP对一个动作进行封装,则有点不伦不类。 换而言之,OOP面向名词领域,AOP面向动词领域。

总之,AOP可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术,把散落在程序中的公共部分提取出来,做成切面类,这样的好处在于,代码的可重用,一旦涉及到该功能的需求发生变化,只要修改该代码就行,否则,你要到处修改,如果只要修改1、2处那还可以接受,万一有1000处呢。

最常用的AOP应用在数据库连接以及事务处理上。

实现模式可能为:代理模式+工厂模式

转载于:https://www.cnblogs.com/supersnow/p/4679453.html

AOP与OOP的区别相关推荐

  1. AOP和OOP的区别

    1. 面向方面编程 AOP 偏重业务处理过程的某个步骤或阶段,强调降低模块之间的耦合度,使代码拥有更好的移植性. 2. 面向对象编程 (oop) 则是对业务分析中抽取的实体进行方法和属性的封装. 也可 ...

  2. 一篇搞懂OOA/OOD/OOP的区别

    文章目录 OOA OOD OOP 总结 相关文章: 一篇搞懂OOA/OOD/OOP的区别 面向对象的基本原则-抽象,封装,继承,分解 GRASP模式概述 面向对象的六大原则 OOA什么鬼,OOD又是什 ...

  3. Spring AOP 和 AspectJ的区别

    Spring AOP 和 AspectJ的区别 springAOP 是spring支持的面向切面AOP 编程. AspectJ是一个面向切面的框架,它扩展了Java语言.AspectJ定义了AOP语法 ...

  4. 面向对象中OOA, OOD 和OOP的区别

    要想弄明白这三个概念(OOA, OOD, OOP)的区别,先得了解什么是对象.对象是日常生活中接触到的东西,可以是树.人.天空.汽车.......对象是一系列行为的发出者(behavior), 同时也 ...

  5. AOP和IOC的区别

    AOP和IOC的区别 二者没有联系.ioc是控制反转,aop是面向事务. IOC就是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是通过容器生成,同时,要是产生的是单例的b ...

  6. POP、OOP、AOP、LOP的区别

    文章目录 前言 1.POP(Procedure Oriented Programming) 2.OOP(Object Oriented Programming) 3.AOP(Aspect Orient ...

  7. java中aop和aoc的区别_AOC与AOP的区别

    摘要: 在之前的视频中,我们提到了法国葡萄酒中的"AOC"标签,但是有些酒友就会有疑问了,我的葡萄酒上标的不是AOC,而是AOP,这是怎么回事呢? 红酒世界学红酒,学一点,懂一点. ...

  8. java中aop和aoc的区别_法国AOC、AOP、VDP和IGP葡萄酒有什么区别?

    原标题:法国AOC.AOP.VDP和IGP葡萄酒有什么区别? 对于大多数葡萄酒爱好者来说,AOC和波尔多都是同时认识的.很多人读不懂Bourgogne.Loire Valley或者Rhone Vall ...

  9. aopaspect区别_spring 中的aop:advisor和aop:aspect有什么区别?

    在xml中 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www ...

最新文章

  1. JS事件冒泡与事件捕获
  2. lower_bound和upper_bound算法
  3. mandatory oracle 字段,Oracle 数据库需要在2019年April之前Mandatory升级的说明
  4. Java虚拟机------JVM内存区域
  5. echarts asp mysql 源码_如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)...
  6. 解决Ubuntu18.04下VLC打不开的问题
  7. 五大优秀的数据库设计工具
  8. WCDMA 基本信令流程
  9. 二阶带通有源滤波器设计与仿真测试
  10. Wolfram|Alpha搜索引擎
  11. 使用WebPack构建UMD库兼容性原理浅谈
  12. sketch 导出html,用 Sketch 设计和输出响应式网页
  13. php 打印去掉页眉页脚,window.print打印 去掉页眉页脚及打印链接
  14. C++操作题-定义并实现一个银行类(Bank)
  15. 10 分钟了解 Flutter 跨平台方案
  16. 《上瘾》学习笔记(第一、二章)
  17. 运用gm/id法设计二级运放教程
  18. tcpdump wireshark安装及 tcpdump 的试用
  19. 科研级试剂材料磷脂聚乙二醇马来酰亚胺 DSPE-PEG-MAL----为华生物
  20. Vue.js 学习笔记十二:Vue CLI 之创建一个项目

热门文章

  1. 行业职业病+生活安全事项
  2. 打开老工程的办法(日常操作以这个为准)
  3. OpenCV3学习笔记二:图像的掩膜操作
  4. java中volatile关键字---学习笔记
  5. 常用的正则表达式的运用--学习笔记(二)
  6. Activity和Service的生命周期-----Activity学习笔记(一)
  7. Service Fabric下删除实例并注销应用
  8. 玩转JavaScript正则表达式
  9. shell学习三十四天----printf详解
  10. MariaDB 加密特性及使用方法