Go语言设计模式之责任链模式

news/2024/5/19 13:01:33 标签: golang, 设计模式, 责任链模式

其实很多人不知道,责任链模式是我们工作中经常遇到的模式,特别是web后端工程师,我们工作中每时每刻都在用:因为市面上大部分的web框架的过滤器基本都是基于这个设计模式为基本模式搭建的。

1.模式介绍

我们先来看一下责任链模式(Chain Of Responsibility Design Pattern )的英文介绍:
Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the receiving objects and pass the request along the chain until an object handles it.

翻译成中文就是:将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。

这么说比较抽象,用更加容易理解的话来进一步解读一下。在责任链模式中,一个请求过来,会有多个处理器(也就是刚刚定义中说的“接收对象”)依次处理同一个请求。即请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责,所以叫作责任链模式

在这里插入图片描述

2.模式demo


http://www.niftyadmin.cn/n/307556.html

相关文章

Babel 总结

文章目录 Babel 总结概述安装使用一、添加配置文件二、编写源代码三、配置package.json四、编译代码 对比代码 Babel 总结 概述 Babel 是一个 JavaScript 编译器,主要用于在当前和旧的浏览器或环境中,将 ECMAScript 2015 代码转换为 JavaScript 向后兼…

SPI配置

I/O配置 主输出、从输入(MOSI) 主出从入(MOSI )引脚是主器件的输出和从器件的输入,用于主器件到从器件的串行数据传输。当SPI 配置为主器件时,该引脚为输出,当 SPI 配置为从器件时,该…

PHP面试宝典之Linux

fork()函数? 从一个已存在进程中创建一个子进程,并将父进程内部数据复制一份交给子进程; 返回值:子进程中执行返回0,父进程中执行返回子进程ID,创建失败返回-1 文件权限? r:读&a…

如何系统全面的自学自动化测试?明确后我直接拿到了20K

玩自动化测试多年的老司机带你上车全面系统学习自动化测试,并且还能教你如何学习才能在今年拿到一份不错的offer。 说到系统全面,就是以目前绝大部分公司招聘要求的知识内容为基准,毕竟我们学习自动化测试都是为了高薪工作,《史记…

对于零基础小白来说,转行学云计算和java哪个更好一些?求推荐

对于零基础小白来说,转行学云计算和java哪个更好一些? 云计算和Java是两个不同的技术领域,虽然它们都与计算机网络、分布式系统和互联网应用程序等相关,但它们的学习重点和应用场景也不同。虽然他们都是非常有前途的IT领域&#x…

hexo stellar设置目录跳转记录

1. 使用hexo-toc插件 一开始使用的是hexo-toc的插件:参考hexo安装toc插件 详细的可以看github的项目: github-hexo-toc 更加详细的配置: Hexo添加Toc支持,生成文章目录 2. 官网的方式(推荐) stellar博…

各种预训练模型的理论和调用方式大全

诸神缄默不语-个人CSDN博文目录 本文主要以模型被提出的时间为顺序,系统性介绍各种预训练模型的理论(尤其是相比之前工作的创新点)、调用方法和表现效果。 最近更新时间:2023.5.10 最早更新时间:2023.5.10 BertRobe…

一名【合格】前端工程师的自检清单

1.JavaScript规定了几种语言类型? 基本数据类型:number、string、boolean、null、undefined、symbol(es6) 对象引用类型:Array、Function、Object、RegExp、Error、Date 2.JavaScript对象的底层数据结构是什么? JavaScript 对象…