设计模式--第22篇(责任链模式)

本文详细介绍了责任链模式,旨在减少请求发送者和接收者间的耦合。通过建立对象链来传递请求,直到找到合适的处理者。内容包括模式原理、类图解释、实例解析及SpringMVC中的应用,帮助读者深入理解并掌握这一设计模式。
摘要由CSDN通过智能技术生成

一,责任链模式

责任链模式:

  1. 多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将对象连成一个链,沿着这个链传递请求,直到请求被处理或链结束;
  2. 为请求创建一个接收者对象的链,对请求的发送者和接收者进行解耦;
  3. 责任链的每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,则会把该请求传递给下一个接收者,依次类推;

二,原理类图

在这里插入图片描述
意图: 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
适用性:
有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。
你想在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。
可处理一个请求的对象集合应被动态指定。

三,实例

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

package com.neei.chain;

/**
 * @param
 * @Author: AaNeei
 * @Date: 2019/10/18  23:16
 * @Description: 游学网
 * @throws:
 */
public abstract class Approver {
   
    /**
     * 下一个接收者
     */
     Approver approver;
     String name;

    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public Approver(String name) {
   
        this.name = name;
    }

    public void setApprover(Approver approver) {
   
        this.approver = approver;
    }

    public abstract void processRequest(PurchaseRequest request);
}

ConcreteHandler: 处理自己负责的请求,同时可以访问下一个处理者,如果可以处理当前请求,则处理,否则就将该请求交个后继者处理,从而形成一个链

public class DepartmentApprover extends Approver {
   
    public DepartmentApprover(String name) {
   
        super(name);
    }

    @Override
    public void processRequest(PurchaseRequest request) {
   
        if (request.getPrice() <= 5000) {
   
            System.out.println("请求id=" + request.getId() + ",已被" + this.name + "处理了。。。");
            return;
        }
        approver.processRequest(request);
    }
}

public class CollegeApprover extends Approver {
   
    public 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值