责任链模式
场景: 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 表示一个请求,含有多个属性
具体实例:
注意!! 实现是 各个审批,设置好下一个审批(构成一个环形)
代码 后续补充