职责链设计模式

职责链模式用于解耦请求处理与接收者,常用于OA系统审批流程,如采购审批。在SpringMVC中,HandlerExecutionChain类体现了职责链模式,处理请求时结合适配器模式,实现拦截器的执行。职责链模式提高了系统灵活性,但也可能导致性能下降和调试复杂性增加,适用于多级审批或处理流程。
摘要由CSDN通过智能技术生成

职责链模式

学校OA系统的采购审批项目

采购员采购教学器材

1)如果金额小于等于5000,由教学主任审批(0<=x<=5000)

2)如果金额小于等于10000,由院长审批(5000<x<=10000)

3)如果金额小于等于30000,由副校长审批(10000<x<=30000)

4)如果金额超过30000,由校长审批(30000<x)

传统方案解决OA系统审批,传统的设计方案(类图)

在这里插入图片描述

传统方案解决OA系统审批问题分析

1)传统方式是:接收一个采购请求后,根据采购金额来调用对应Approver(审批人)完成审批

2)传统方式的问题分析:客户端这里会使用到分支判断(比如switch)来对不同的采购请求处理,这样就存在如下问题(1)如果各个级别的人员审批金额发生变化,在客户端的也需要变化(2)客户端必须明确的知道有多少审批级别和访问

3)这样对一个采购请求进行处理和Approver(审批人)就存在强耦合关系,不利于代码的扩展和维护

4)职责链模式

1、职责链模式

基本介绍

1)职责链模式(ChainOfResponsibilityPattern),又叫责任链模式,为请求创建了一个接收者对象的链。这种模式对请求的发送和接收者进行解耦

2)职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么他会把相同的请求传给下一个接收者,依次类推

3)这种类型的设计模式属于行为型模式

在这里插入图片描述

对原理类图的说明

1)Handler:抽象的处理者,定义了一个处理请求的接口,同时含有另外Handler

2)ConcreteHandlerA,B是具体的处理者,处理它自己负责的请求,可以访问它的后继者,如果可以处理当前请求,则处理,否者就将请求交给后继者处理,从而形成一个职责链

3)Request,含义很多属性,表示一个请求

职责链模式解决OA系统采购审批

在这里插入图片描述

package designPatterns.chainofresponsibility;

//采购请求
public class PurchaseRequest {
   
    private int id;
    private float price;
    private int type = 0;

    public PurchaseRequest(int id, float price, int type) {
   
        this.id = id;
        this.price = price;
        this.type = type;
    }

    public int getId() {
   
        return id;
    }

    public void setId(int id) {
   
        this.id = id;
    }

    public float getPrice() {
   
        return price;
    }

    public void setPrice(float price) {
   
        this.price = price;
    }

    public int getType() 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值