设计模式-责任链模型
责任链模式
场景: OA审批系统
- CEO 审批项目 经费 500万<x ≤\leq≤ 1000万
- 总监 审批的经费 300万 < x ≤\leq≤ 500万
- 总监秘书 审批的经费 100万< x ≤\leq≤ 300万
- 研发经理 审批的经费 50万 <x ≤\leq≤ 100万
传统方式 是 (接收到请求后,根据相应金额,来调用相应的approver 处理),客户端 采用 if else 或者switch 方式来解决 (缺点) 当需要添加,相应角色的时候,或者金额变动时,都需要修改客户端 ,并且客户端(存放 接口请求,分配给那个approver )需要知道多少个审批解决和访问。
职责连模式介绍: 每一个接收者,都包含另一个接收者的引用
注意!! handler 其他人也可能称为:appprover
责任链模式,为请求创造一个接受者对象的链 这种模式对请求者和接收着,进行解耦。
- 职责连模式介绍: 每一个接收者,都包含另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传递给下一个接收者。
- 责任链模型属于行为模型
原理图
- Handler 抽象的处理者(abstract),定义一个处理请求的接口(abstract)同时含另外一个handler。
- ConcreHandlerA,B 是具体的处理者,若能处理则处理,若不能处理,则传递给下一个处理者。
- request 表示一个请求,含有多个属性
具体实例:
注意!! 实现是 各个审批,设置好下一个审批(构成一个环形)
代码 后续补充
设计模式-责任链模型相关推荐
- Java设计模式-责任链模式
Java设计模式-责任链模式,我想这是值得你了解一下下的啦. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持 ...
- 行为设计模式 - 责任链设计模式
行为设计模式 - 责任链设计模式 责任链设计模式是行为设计模式之一. 目录[ 隐藏 ] 1责任链设计模式 1.1 JDK中的责任链模式示例 1.2责任链设计模式实例 1.3责任链设计模式 - 基类和接 ...
- 设计模式--责任链模式--Java实现
设计模式–责任链模式–Java实现 责任链模式–链式数据结构–内存消耗–Java的awt事件一开始用责任链模式后来改为观察者模式–为什么呢?–现在的应用–dom事件–异常处理机制-过滤器链–等等 学习 ...
- 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器
理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...
- java责任链模式审批请假_Java设计模式-责任链模式
Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...
- 设计模式-责任链(职责链)模式及责任链设计模式的应用
1.什么是责任链设计模式 责任链设计模式主要构成有抽象处理者.具体处理者.客户类,在处理请求的时候,将请求通过客户类发送至处理链路上,这样所有处理对象都有机会处理请求,使发送者与接受者解耦 在责任链模 ...
- 一起学设计模式 - 责任链模式
责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...
- 大话设计模式—责任链模式
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...
- 设计模式 责任链模式
责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...
最新文章
- Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug
- java jdom 更新xml_Java中使用JDOM来修改XML文档(续前)
- 工作173:一级控制二级菜单的变化
- 解决链接错误:error LNK2001: 无法解析的外部符号 __iob
- webpack+react+redux+es6开发模式
- java thread safe_Java 线程安全 Thread-Safety
- Camera TTC估计
- 形象解释 undefined 和 null 之间的区别
- JS中的List转Map
- Linux开发板网络连接
- Apache ShenYu源码阅读系列-基于WebSocket的数据同步
- linux pam 解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁
- COMSOL有限元仿真深度指南:如何分析更为复杂的材料各向异性结构?
- php学习笔记:登录练习(3)
- Fiddler替换HTTP Request Host
- DragonBoard 高通推出 IoT板 hitting raspberry pi
- 地平线旭日X3派试用 | ssh密钥登陆 蓝牙手柄连入ros
- LeetCode Daily challenge - Course Schedule
- 各类识别、深度学习-开源代码文献梳理
- 超全的matlab绘图实例及代码(曲线,曲面,饼状图,柱形图,网格图,球面等)