职责链模式 (Chain of Responsibility Pattern)

1、类图

2、代码

public class Main {
    
    public static void main(String[] args) {
        Handler mr1 = new Instructor();
        Handler mr2 = new Headmaster();
        Handler mr3 = new Student();
        mr1.setNextHandler(mr2);
        mr2.setNextHandler(mr3);
        
        // 输出:request:instructor-headmaster-student
        mr1.handleRequest("request:");
    }
    
}

/* 抽象处理者 */
abstract class Handler {
    
    protected Handler nextHandler = null;

    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

    public abstract void handleRequest(String request);
    
}

/* 具体处理者1 */
class Instructor extends Handler {

    @Override
    public void handleRequest(String request) {
        this.nextHandler.handleRequest(request + "instructor-");
    }
    
}

/* 具体处理者2 */
class Headmaster extends Handler {

    @Override
    public void handleRequest(String request) {
        this.nextHandler.handleRequest(request + "headmaster-");
    }

}

/* 具体处理者3 */
class Student extends Handler {

    @Override
    public void handleRequest(String request) {
        System.out.println(request + "student");
    }

}

 

posted @ 2022-04-25 17:00  HanselHuang  阅读(44)  评论(0编辑  收藏  举报