责任链模式定义
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。
我的理解
举个例子,在HTTP请求过来时,会有多个处理这进行处理,比如权限验证处理,日志处理,业务 处理等等。如果采用非职责链模式的话,我们客户端,会调用权限处理模块、日志 处理模块等去处理该请求,即定义中说的与多个请求矗立着耦合在一起。
采用责任链模式,即我们客户端,调用权限处理模块处理后,权限处理模块会自动调用它后面的处理者。每一个处理者都有下一个处理者的引用。这样,客户端,只需要要调用责任链中的第一个,就可以延着这条链传递,直到处理完毕。
代码例子
下面的这个例子,当请求过来时,权限模块先处理,然后交给日志模块去处理(仅仅打印信息)
package main
import (
"fmt"
)
func main() {
//组装责任链
logHandler := new(LogHandler)
authoHandler := new(AuthoHandler)
authoHandler.SetNext(logHandler)
//责任链间传递的信息
info := RequestInfo{
Name