面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。
但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。
也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。
这样看来,AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的类来,而AOP则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,AOP使OOP由原来的二维变为三维了,由平面变成立体了。从技术上来说,AOP基本上是通过代理机制实现的。
AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充。

什么是aop面向切面相关推荐

  1. java aop面向切面编程

    最近一直在学java的spring boot,一直没有弄明白aop面向切面编程是什么意思.看到一篇文章写得很清楚,终于弄明白了,原来跟python的装饰器一样的效果.http://www.cnblog ...

  2. 【AOP 面向切面编程】Android Studio 使用 AspectJ 监控方法运行原理分析

    文章目录 一.查看使用 AspectJ 后生成的 Class 字节码类 二.AspectJ 的本质 一.查看使用 AspectJ 后生成的 Class 字节码类 在 Android Studio 中查 ...

  3. 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )

    文章目录 一.AspectJ 下载 二.拷贝 aspectjrt.jar 到 Android Studio 三.配置 Gradle 和 Gradle 插件版本 四.配置 Gradle 构建脚本 一.A ...

  4. 【AOP 面向切面编程】AOP 简介 ( AspectJ 简介 | AspectJ 下载 )

    文章目录 一.AOP 简介 二.AspectJ 简介 三.AspectJ 下载 一.AOP 简介 AOP 是 Aspect Oriented Programming 的缩写 , 面向切面编程 ; 利用 ...

  5. Spring 详解(三):AOP 面向切面的编程

    AOP即面向切面编程,它通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型. ...

  6. 切面是异步还是同步操作‘_Autofac的AOP面向切面编程研究

    什么是AOP: 我的理解是 把系统性的编程工作封装起来 =>我给这个取个名字叫 "Aspect",然后通过AOP技术把它切进我们的业务逻辑代码 => "业务& ...

  7. Javascript aop(面向切面编程)之around(环绕)

    Aop又叫面向切面编程,其中"通知"是切面的具体实现,分为before(前置通知).after(后置通知).around(环绕通知),用过spring的同学肯定对它非常熟悉,而在j ...

  8. 大数据WEB阶段Spring框架 AOP面向切面编程(一)

    Spring - AOP面向切面编程(一) 一.代理模式概述 代理的特点:(目标对象即被代理者) 实现和目标对象相同的接口 具备和目标对象的方法 代理者不仅要做目标对象的方法 , 还要做一些额外的操作 ...

  9. 大数据WEB阶段Spring框架 AOP面向切面编程(二)

    Spring AOP面向切面编程(二) 一.切入点的execution表达式 execution的表达形式: execution(修饰符? 返回值类型 所在包类? 方法名(参数列表) 异常?) ?表示 ...

  10. AOP(面向切面编程)大概了解一下

    前言 上一篇在聊MemoryCache的时候,用到了Autofac提供的拦截器进行面向切面编程,很明显能体会到其优势,既然涉及到了,那就趁热打铁,一起来探探面向切面编程. 正文 1. 概述 在软件业, ...

最新文章

  1. css 横线_CSS-画一个太极阴阳图
  2. 《城市建筑美学》读书笔记
  3. m个苹果放入n个盘子问题
  4. k8s查看pod的yaml文件_K8s-yaml的使用及命令
  5. Spring.NET学习笔记22——整合WCF(应用篇) Level 200
  6. MongoDB 计划从“Data Sprawl”中逃脱!
  7. wangeditor react中使用
  8. 中国网和七牛云达成战略合作,携手打造国际化融媒中心
  9. Java版扫雷小游戏
  10. 【读书笔记】IOS帝国-Apple Ⅱ/Mac/皮克斯/iPod/iTunes/iPhone/App Store/iPad,苹果教父:史蒂夫·乔布斯传_2020.02.15
  11. I/O模型+Nginx基本配置
  12. linux .otf文件,如何在Linux上将OTF或是TTF字库案转成WOFF或是WOFF2网页字库案?
  13. java常见异常和代码演示
  14. 16、单片机串口原理与应用
  15. MongoDB下载与安装
  16. 二手车数据挖掘- 数据分析
  17. c#仿qq好友列表控件
  18. 为黑苹果解锁AirDrop功能和蓝牙以及WI-FI
  19. 做得好 vs 做得快?
  20. 《人体解剖学(基础医学)》

热门文章

  1. 记录入职一周,逐渐熟悉iMac如何操作,一直在画页面,难度逐渐增加!
  2. SVN命令解析以及问题解决(update...)
  3. L2范数的计算展开式
  4. js修改referer 解决图片防盗链问题
  5. Linux WIFI 驱动实验(USB和SDIO方式)
  6. vue2.0中的滚动问题--点击跳转到页面指定位置
  7. k8s之Namespace详解
  8. 使用ExcelUtils导出Excel文件
  9. JS正则表达式完全匹配字符
  10. 常用cypher语句