责任链模式
责任链模式:在处理核心业务前后,可能会有很多道自定义的工序
,每道工序
间存在线性依赖关系。简单粗暴的,是所有代码揉成一团
责任链模式使得每道工序
可以自由拼接,传递顺序明确,便于扩展
典型的应用是 http 请求处理, github 上有一个项目使用了该模式,网址如下:
https://github.com/gin-gonic/gin#using-middleware
下面先给一个感性的例子,再详细分析下其实现原理
gin 使用例子展示
这里引用 bilibili/discovery 中使用 gin 的例子:
(摘录部分代码,增加注释、删除干扰代码等)
func Init(