Aop详解

Aop详解

aop技术简介

背景

对于一个业务来说,我们如何不在不修改源代码的基础上对对象进行功能拓展

方案一: 基于继承的方式实现其功能拓展

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zjaJhHW9-1664935797573)(C:\Users\y'j'j\AppData\Roaming\Typora\typora-user-images\image-20221005094020112.png)]

基于继承方式实现其功能拓展,优略势:

优势:简单,且容易理解

劣势:不够灵活(耦合太高,父类一旦修改方法,所有的子类都要跟着改)

方案二:基于组合方式实现其功能拓展

在这里插入图片描述

基于组合方式实现其功能拓展,优劣势:

优势:灵活(可以为指定接口下所有的实现类做功能拓展),稳定(组合的具体对象发生变化,不会影响当前类)

劣势:相对于继承来说不容易理解

总结

无论是继承还是组合都是基于OCP原则(开闭原则,对功能拓展开放,对修改关闭),都是去实现了对象的功能拓展,都有相应的优缺点,并且我们都需要去编写子类或者兄弟类,这些类中再去调用目标类对象(父类,兄弟类)的方法以及拓展业务逻辑,对于这些代码我们可以简化(由框架直接实现去共性:创建子类对象,创建兄弟类对象),特性交由用户自己实现

AOP是什么?

AOP是面向切面编程的一种编程思想,它要在不改变源码情况下对目标对象进行功能(动态)增强,为目标对象动态织入

SpringAOP快速入门

添加AOP依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4ROE8Qx8-1664935797575)(C:\Users\y'j'j\AppData\Roaming\Typora\typora-user-images\image-20221005100407119.png)]

AOP相关术语以及概念

切面:切入点+增强方法

切面对象:封装了拓展业务逻辑的对象,在spring中可以用@Aspect注解描述

切入点(PointCut) 定义切面拓展业务逻辑中的一些方法的集合(哪些方法运行时切入拓展业务),一般来说会通过切入点表达式进行相关定义,一个切面中可以包含多个切入点

连接点(JoinPoint) 封装了切入点方法的集合封装的某一个正在执行的目标方法的对象,可以通过连接点对象获取到具体执行的目标方法,甚至还可以去调用目标方法

增强方法: 切面内部封装的拓展业务逻辑的具体方法对象,一个切面中有多个增强方法(@around @before @after @afterThrowing @afterReturning )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浓父小杨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值