AOP(面向切面编程)的简单理解笔记

AOP(Aspect Oriented Programming 面向切面编程)是从OOP(面向对象编程)衍生出来的,我查阅了各种书籍、网课,上面的都比较说法晦涩难懂,有甚者连基本概念都没讲就直接领着啃源码,个人太笨了,不太适应这种学习方式。还是没能正确的理解AOP的本质,最后终于在知乎的这篇提问下找到了相对简单的引例。
回忆一下,OOP的三个要素,“封装”、“继承”、“多态”。其中封装要求我们将各种方法封装到一个类里面,这样做分散了代码和功能,无疑提高了代码的可维护性和可重用性,但是也产生了一些弊端。如果有功能是公用的,那么我们必须将这个功能在所有类里面重写一遍,例如记录日志功能,我们要求在某些方法执行的时候,进行日志记录,那么按照传统OOP,我们需要在这些方法里面都加入日志记录相关的代码,大大增加了代码量,你当然也可以选择将日志记录功能封装成类,然后在这些方法执行的时候调用即可,但是这样作则无疑令这些方法所属的类与日志记录类耦合,所以诞生了AOP思想,将我们需要运行的代码(切面 Aspect)动态的插入(切入)到指定的地方。 继续刚刚的例子,我们在需要进行日志记录的类方法开始运行前建立一个插入点(切入点 Point cut),当运行到这些切入点时,我们对程序进行拦截,然后通过通知(Advice) 来执行 切面,在例子中,日志记录相关的代码就是切面,而被通知的对象(被关注的对象、被注入切面的对象)就是目标对象(Target)。最后我们还要了解切面的织入(Weaving) 方式,即何时将切面注入到相应位置:编译时期织入、类加载时期织入、执行时期织入。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值