我们将一个事件处理标记为handler, 那么AOP指代的,就是围绕这个handler的【执行前】【执行后】的切面操作,他可以形象地描述为:
在这里插入图片描述

这种执行流程,容易开发成以下样式:

beforeHandler()
handler()
AfterHandler()

一旦做成这样子,那么在同一个handler接入不同的切面操作时,便会需要无限侵入代码,变成:

...
countExecTime()
startRateLimit()
handler
endRateLimit()
endExecTime()
...

这样子的操作,不只是丑陋,而且随着aop操作增多,维护难度会剧增。

c.Nextc.Abort()

那么,我们能否依照同类api,来达到类似的效果呢?

答案是,可以的。

合理的AOP设计,应该是这样的
在这里插入图片描述
它的执行流为:
限流start --> 熔断start —> handler —>熔断end --> 限流end