责任链设计模式,就是一个链
我也是参照着网上大部分说的案例来学习的,再复述一遍:
假如我要请假,公司规定不超过3天,TL审批即可;3天到6天之内,这是公司的规定,我们假如员工不知道这个规定,那责任链设计模式就是说:
我在请假的时候,我只需要按照我想请假的天数提交申请,至于是TL审批?还是TL的TL审批?还是大boss审批?对于提交请假申请的人,不需要关心
因为在这个场景中,TL、TL的TL、大boss这三者是在一个责任链上的,他们三个人都可以来处理请假请求,对于请假人,只需要提交申请,如果责任链中的第一个处理不了,会把请求申请转交给下一个人,直到责任链中的最后一个处理人,当然,也有可能无人处理
责任链设计模式优缺点
责任链设计模式的优点
将服务调用者和处理者解耦,服务调用者无需关心具体实现
灵活性较高,可以动态的添加handler
责任链设计模式的缺点:
对性能有一定的影响
可能会造成死循环
责任链设计模式demo
public abstract class AbstractHandler {
protected AbstractHandler next;
public void setNextHandler(AbstractHandler abstractHandler){
this.next = abstractHandler;
}
/**
* 入参为休假天数,我们认为,不超过3天,只需要leader审批即可
* 如果超过3天,不超过5天 需要leader的leader(boss)审批
* 如果超过5天,需要leader的leader的leader(bigBoss)审批
* @param vocationDays
*/
public abstract void handlerRequest