责任链模式
什么是责任链
责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。
责任链设计模式的基本组成
- 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。
- 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。
- 客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程。
概念示例
让我们来看看一个医院应用的责任链模式例子。 医院中会有多个部门, 如:
- 前台
- 医生
- 药房
- 收银
病人来访时, 他们首先都会去前台, 然后是看医生、 取药, 最后结账。 也就是说, 病人需要通过一条部门链,每个部门都在完成其职能后将病人进一步沿着链条输送。
此模式适用于有多个候选选项处理相同请求的情形,适用于不希望客户端选择接收者(因为多个对象都可处理请求) 的情形,还适用于想将客户端同接收者解耦时。客户端只需要链中的首个元素即可。
参考文章
https://refactoringguru.cn/design-patterns/chain-of-responsibility
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.