Java 责任链模式

2021-02-10  本文已影响0人  索性流年

文集地址

什么是责任链设计模式?

要点主要是:

责任链模式应用场景

责任链设计模式如何保证顺序问题?

应用案例

实现案例

/**
 * 抽象类(定义共同行为)
 *
 * @author ext.liuyan10
 * @date 2021/2/7 9:48
 */
public abstract class Handler {
    /**
     * 下一个责任链对象
     */
    protected Handler next;

    /**
     * 处理事件
     */
    public abstract void handleEvent();
}

/**
 * 责任链处理者(组长)
 *
 * @author ext.liuyan10
 * @date 2021/2/7 9:52
 */
public class GroupLeaderHandler extends Handler {

    public GroupLeaderHandler() {
        ManagerHandler managerHandler = new ManagerHandler();
        this.next = managerHandler;
    }

    @Override
    public void handleEvent() {
        System.out.println("组长:一个月的假我批不了,我给你找经理去");
        this.next.handleEvent();
    }
}

/**
 * 责任链处理者(经理)
 *
 * @author ext.liuyan10
 * @date 2021/2/7 10:11
 */
public class ManagerHandler extends Handler {
    public ManagerHandler() {
        ChairmanHandler chairmanHandler = new ChairmanHandler();
        this.next = chairmanHandler;
    }

    @Override
    public void handleEvent() {
        System.out.println("经理:这么长的假我也没权限审批,帮你交到董事长那,得他同意才行");
        this.next.handleEvent();
    }
}

/**
 * 责任链处理者(董事长)
 *
 * @author ext.liuyan10
 * @date 2021/2/7 10:13
 */
public class ChairmanHandler extends Handler {
    public ChairmanHandler() {
    }

    @Override
    public void handleEvent() {
        System.out.println("董事长审批完成");
    }
}

/**
 * @author ext.liuyan10
 * @date 2021/2/7 9:47
 */
public class ResponsilbillityApp {
    public static void main(String[] args) {
        GroupLeaderHandler groupLeaderHandler = new GroupLeaderHandler();
        groupLeaderHandler.handleEvent();
    }
}

Connected to the target VM, address: '127.0.0.1:56500', transport: 'socket'
组长:一个月的假我批不了,我给你找经理去
经理:这么长的假我也没权限审批,帮你交到董事长那,得他同意才行
董事长审批完成
Disconnected from the target VM, address: '127.0.0.1:56500', transport: 'socket'

Process finished with exit code 0

上一篇 下一篇

猜你喜欢

热点阅读