设计模式之 责任链模式
2021/7/6 23:35:07
本文主要是介绍设计模式之 责任链模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、定义
当你想让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。
二、分析
我们在实际开发过程中,往往会遇到在执行某些操作时需要进行很多条件的验证。
比如说在用户在订购一个商品时,我们就需要进行用户认证、库存校验、账户校验等等操作,只有经过这些处理后才能正常执行操作。
如果我们在订购的代码里加上这些校验,就会变成下面的这样:
如果我们后续,需要添加更多的校验或者取消某些校验,这样会导致代码变得越来越多, 也越来越混乱。
当出现此类的逻辑,设计模式建议我们使用责任链模式。把处理逻辑连成一个链,链上的每个节点都可以跳转到下一个节点上。当需要处理的对象经过每个节点时,节点只需处理自己的逻辑,处理完成后调用下一个节点,直到走完所有的节点。
三、模式类图
四、优缺点
- 将请求者和接收者解耦;
- 简化类结构,类不需要知道全部细节;
- 可以更改处理的顺序,动态的添加和删除校验逻辑;
- 并不能保证请求被处理;
- 请求链过长会导致性能降低;
- 不易于观察运行时特征,有碍于除错,我能可能找不到是哪一个类处理了它。
五、实例
在员工请假流程中,公司规定:
请假天数3天内,部门经理审批即可,
请假天数大于3天的需要再通过老板审批后才能请假。
根据实例说明,我们可以定义部门经理的处理类和老板处理类,当请假天数3天内,部门经理就进行审核;
审核完成后流向老板处理类,老板处理类判断,发现天数在3天以内就继续往下放行,大于3天就进行审核。
源码:gitee地址(点击跳转)
这篇关于设计模式之 责任链模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)