前言
文章内容主要参考了刘伟主编的《设计模式(第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