谈谈对AOP的理解

系统是由许多不同的组件所组成,每一个组件各负责一块特定功能。除了实现自身核心功能之外,这些组件还经常承担着额外的职责,例如日志、事务管理和安全,这样的系统服务经常融入到自身具有的核心业务逻辑的组件中去。这些系统服务经常被称为横切关注点,因为它们会跨越系统的多个组件。
理解:我们有一个旅游网站项目,包含订单接口、支付接口等等,订单接口中可以进行订单的查询的功能,除了这个核心功能外,系统还需做其他的一些事情,如日志和异常处理,但这些与我们的核心逻辑无关。

当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能,日志代码往往水平地散布在所有的对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP的设计中,它导致了大量代码的复用,而不利于各个模块的重用。
理解:OOP需要确定在一个事件中,有哪些对象,每一个对象有哪些方法,每个对象要做什么事情会对应不同的函数。在这种前提下,我们的这个订单接口中,需要定义一个订单查询的对象,来进行查询,同时还需要定义一个日志功能的对象来进行日志打印,需要定义一个异常处理的对象来进行异常处理。对于支付接口同理,除了完成支付功能的对象,还需要重复定义日志和异常处理的对象。

AOP:将程序中的交叉业务逻辑(比如安全、日志和事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。AOP可以对某个对象或某些对象的功能进行增强,比如对象中的方法进行增强,可以在执行某个方法之前额外的做一些事情,在某个方法执行之后额外的做一些事情。
理解:有了AOP后,后期再增加新的接口,这个接口只要符合切面的一些规则,AOP就能自动对新的接口中的对象进行功能的增强,就能直接使用打印日志或事务管理的功能。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值