设计模式(十四)—— 职责链模式(定义、案例分析、特点、缺点)

本文详细介绍了职责链模式,通过一个请假审批系统的例子,阐述了如何使用该模式来处理不同级别的审批请求。职责链模式降低了耦合度,允许在运行时动态指定请求处理者,但也存在请求未被接收的风险和可能的性能影响。
摘要由CSDN通过智能技术生成


前言

文章内容主要参考了刘伟主编的《设计模式(第2版)》,同时也结合了自己的一些思考和理解,希望能帮到大家。


本篇讲解职责链模式,深入其中,其实非常容易理解思想。

正文

一、定义

职责链模式(Chain of Responsibility Pattern):避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止,属于对象行为模式。

职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链传递,由链上的处理者对请求进行相应的处理,客户端无须关心请求的处理细节以及请求的传递,只需将请求发送到链上即可,将请求的发送者和请求的处理者解耦。

二、情景假设

某OA系统需要提供一个假条审批的模块,如果员工请假天数小于3天,主任可以审批该假条;如果员工请假天数大于等于3天,小于10天,经理可以审批;如果员工请假天数大于等于10天,小于30天,总经理可以审批;如果超过30天,总经理也不能审批,提示相应的拒绝信息。

啊要是以前的我肯定直接ifelse搞定了(狗头

三、情景分析

关于上面情景的类图(具体分析在下面)
在这里插入图片描述

首先定义一个假条类,用来请假

public class LeaveRequest
{
   
	private String leaveName;
	private int leaveDays;

	public LeaveRequest(String leaveName, int leaveDays){
   
		this.leaveName = leaveName;
		this.leaveDays = leaveDays;
	}

	public void setLeaveName(String leaveName){
   
		this.leaveName = leaveName;
	}

	public void setLeaveDays(String leaveDays){
   
		this.leaveDays = leaveDays;
	}

	public String getLeaveName(){
   
		return (this.leaveName);
	}

	public int getLeaveDays(){
   
		return (this.leaveDays);
	}
}

定义一个抽象处理者类

//抽象类 Leader
public abstract 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值