美文网首页
责任链模式

责任链模式

作者: joeylong | 来源:发表于2021-04-15 19:39 被阅读0次
1、责任链模式定义:

当有请求处理时,可将请求沿着链路传递,直到有对象处理为止。

2、责任链模式优点:

每个类单一处理自己的职责,不该处理的传给下一个对象处理,明确范围职责。

3、责任链模式结构:
  • 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。
  • 具体处理者(Concrete Handler)角色:实现抽象处理者的处理方法,判断能否处理本次请求,如果可以处理请求则处理,否则将该请求转给它的后继者。
  • 客户类(Client)角色:创建处理链,并向链头的具体处理者对象提交请求,它不关心处理细节和请求的传递过程。
4、代码
/**
 * 抽象处理者
 */
@Data
abstract class  Employees {
    private Employees next;
    public Employees getNext() {
        return next;
    }
    //处理请求的方法
    public abstract void handleRequest(int day);
}
/**
 * 具体处理者
 */
public class Manager extends Employees {

    @Override
    public void handleRequest(int day) {
        if(day <= 5){
            System.out.println("经理审批");
        } else {
            System.out.println("经理无法审批,下一个");
            if(getNext() != null){
                getNext().handleRequest(day);
            }else {
                System.out.println("请假天数太多,没有人批准该假条!");
            }
        }
    }
}
/**
 * 具体处理者
 */
public class GroupLeader extends Employees {
    @Override
    public void handleRequest(int day) {
        if(day <= 2){
            System.out.println("组长审批");
        } else {
            System.out.println("组长无法审批,下一个");
            if(getNext() != null){
                getNext().handleRequest(day);
            }else {
                System.out.println("请假天数太多,没有人批准该假条!");
            }
        }
    }
}
/**
 * 测试
 */
public class responsibilityTest {
    public static void main(String[] args) {
        Employees groupLeader = new GroupLeader();
        Employees manager = new Manager();
        groupLeader.setNext(manager);
        groupLeader.handleRequest(8);
    }
}

相关文章

网友评论

      本文标题:责任链模式

      本文链接:https://www.haomeiwen.com/subject/sjrqgktx.html