责任链模式

场景: 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 表示一个请求,含有多个属性

具体实例:
注意!! 实现是 各个审批,设置好下一个审批(构成一个环形)

代码 后续补充

设计模式-责任链模型相关推荐

  1. Java设计模式-责任链模式

    Java设计模式-责任链模式,我想这是值得你了解一下下的啦. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢,让我们一起坚持 ...

  2. 行为设计模式 - 责任链设计模式

    行为设计模式 - 责任链设计模式 责任链设计模式是行为设计模式之一. 目录[ 隐藏 ] 1责任链设计模式 1.1 JDK中的责任链模式示例 1.2责任链设计模式实例 1.3责任链设计模式 - 基类和接 ...

  3. 设计模式--责任链模式--Java实现

    设计模式–责任链模式–Java实现 责任链模式–链式数据结构–内存消耗–Java的awt事件一开始用责任链模式后来改为观察者模式–为什么呢?–现在的应用–dom事件–异常处理机制-过滤器链–等等 学习 ...

  4. 理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式丨C++后端开发丨Linux服务器开发丨web服务器

    理解各种设计模式原则及区别丨浅谈Nginx中核心设计模式-责任链模式 1. 开闭.单一职责.里氏替换.接口隔离等设计原则 2. 随处可见的模板方法 3. nginx中核心设计模式 责任链模式 4. 责 ...

  5. java责任链模式审批请假_Java设计模式-责任链模式

    Java设计模式-责任链模式 Java版本:jdk1.8 IDE:IDEA 一 前言 本文介绍责任链模式以及Java下的实现. 二 概念 1.什么是责任链模式 责任链模式(Chain of Respo ...

  6. 设计模式-责任链(职责链)模式及责任链设计模式的应用

    1.什么是责任链设计模式 责任链设计模式主要构成有抽象处理者.具体处理者.客户类,在处理请求的时候,将请求通过客户类发送至处理链路上,这样所有处理对象都有机会处理请求,使发送者与接受者解耦 在责任链模 ...

  7. 一起学设计模式 - 责任链模式

    责任链模式(ChainOfResponsibilityPattern)属于 行为型模式的一种,将请求沿着一条链传递,直到该链上的某个对象处理它为止. 概述 定义如下:一个请求有多个对象来处理,这些对象 ...

  8. 大话设计模式—责任链模式

    顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为 ...

  9. 设计模式 责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

最新文章

  1. Discuz DB层跨库映射关系表名前缀BUG修复后产生的新bug
  2. java jdom 更新xml_Java中使用JDOM来修改XML文档(续前)
  3. 工作173:一级控制二级菜单的变化
  4. 解决链接错误:error LNK2001: 无法解析的外部符号 __iob
  5. webpack+react+redux+es6开发模式
  6. java thread safe_Java 线程安全 Thread-Safety
  7. Camera TTC估计
  8. 形象解释 undefined 和 null 之间的区别
  9. JS中的List转Map
  10. Linux开发板网络连接
  11. Apache ShenYu源码阅读系列-基于WebSocket的数据同步
  12. linux pam 解锁_Linux多次登录失败用户被锁定使用Pam_Tally2解锁
  13. COMSOL有限元仿真深度指南:如何分析更为复杂的材料各向异性结构?
  14. php学习笔记:登录练习(3)
  15. Fiddler替换HTTP Request Host
  16. DragonBoard 高通推出 IoT板 hitting raspberry pi
  17. 地平线旭日X3派试用 | ssh密钥登陆 蓝牙手柄连入ros
  18. LeetCode Daily challenge - Course Schedule
  19. 各类识别、深度学习-开源代码文献梳理
  20. 超全的matlab绘图实例及代码(曲线,曲面,饼状图,柱形图,网格图,球面等)

热门文章

  1. 55exception对象
  2. 27.用zxing生成二维码
  3. html:(29):伪选择符和分组选择符
  4. css块元素与行内元素特点,CSS区分块级元素和行内元素
  5. oracle数据同步异常,案例:DataGuard同步异常问题处理记录
  6. X86逆向教程10:学会使用硬件断点
  7. 【Python练习题】程序5
  8. Cpython解释器支持的进程与线程
  9. 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
  10. adb——Android的ADB工具使用