C#设计模式——职责链模式(Chain Of Responsibility Pattern)
2023-09-14 08:58:57 时间
一、概述
在软件开发中,某一个对象的请求可能会被多个对象处理,但每次最多只有一个对象处理该请求,对这类问题如果显示指定请求的处理对象,那么势必会造成请求与处理的紧耦合,为了将请求与处理解耦,我们可以使用职责链模式,职责链模式可以向多个处理对象提交请求,具体由哪个处理对象进行处理则是在运行过程中动态指定。
二、职责链模式
职责链模式将多个处理对象连接形成一条链,并沿着该链传递需处理的请求,直到有一个对象被处理或是请求被传递到链的末尾为止。该模式将请求与处理解耦,可以动态的增减处理职责,增加了灵活性。其结构图如下:
Handler定义了处理对象的接口,往往通过它来实现后继的职责链。
ConcreteHandler实现Handler定义的接口,定义了不同的处理对象。如果该对象能处理待处理请求,那就进行处理并完成请求在职责链上的传递,如果无法处理,那就转交给后继的处理对象处理。
Client负责向职责链上的处理对象提交请求。
三、示例
我们以用户向银行申请贷款的审批流程为例来看一下职责链模式的应用。这里假设银行对用户贷款的审批分成三个处理层级:金额小于2万元的可由普通员工审批,金额大于等于2万元且小于5万元的由副经理审批,而金额大于等于5万元的则必须由经理来审批。
首先定义申请贷款的基本信息。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
接着定义普通员工、副经理以及经理的处理对象。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
最后看一下客户端调用。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
结果显示如下:
相关文章
- C#子线程中更新ui-----c# 多线程多文件批量下载
- [C#] c# 验证手机号码 最新的17手机号
- C#设计模式——桥接模式(Bridge Pattern)
- C#设计模式(17)——观察者模式(Observer Pattern)
- C#设计模式——适配器模式(Adapter Pattern)
- C#设计模式——工厂方法模式(Factory Method Pattern)
- C#设计模式——生成器模式(Builder Pattern)
- 将Facade装饰模式的代码由C#转为JAVA
- C#设计模式(17)——观察者模式(Observer Pattern)
- C#设计模式——原型模式(Prototype Pattern)
- C#设计模式——观察者模式(Observer Pattern)1
- C#设计模式——适配器模式(Adapter Pattern)
- C#设计模式——迭代器模式(Iterator Pattern)
- C#设计模式——装饰者模式(Decorator Pattern)
- C#设计模式——观察者模式(Observer Pattern)
- C# 观察者模式.
- C# ToString()格式化时间,常用模式
- C# 设计模式----抽象工厂模式
- C# 命令模式
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
- C#设计模式之建造者模式
- 【设计模式】建造者模式(C#)
- 【设计模式】简单工厂模式(C#)