golang 责任链模式

本文介绍了责任链模式的概念,并通过一个HTTP请求处理的例子解释了如何在Golang中使用此模式。通过责任链模式,请求从客户端开始,依次经过权限验证和日志记录等处理环节,实现了处理过程的解耦。
摘要由CSDN通过智能技术生成

责任链模式定义

责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
责任链的传递

我的理解

举个例子,在HTTP请求过来时,会有多个处理这进行处理,比如权限验证处理,日志处理,业务 处理等等。如果采用非职责链模式的话,我们客户端,会调用权限处理模块、日志 处理模块等去处理该请求,即定义中说的与多个请求矗立着耦合在一起。
采用责任链模式,即我们客户端,调用权限处理模块处理后,权限处理模块会自动调用它后面的处理者。每一个处理者都有下一个处理者的引用。这样,客户端,只需要要调用责任链中的第一个,就可以延着这条链传递,直到处理完毕。

代码例子

下面的这个例子,当请求过来时,权限模块先处理,然后交给日志模块去处理(仅仅打印信息)

package main

import (
	"fmt"
)

func main() {
   

	//组装责任链
	logHandler := new(LogHandler)
	authoHandler := new(AuthoHandler)
	authoHandler.SetNext(logHandler)

	//责任链间传递的信息
	info := RequestInfo{
   Name
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值