当你想让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。
我们在实际开发过程中,往往会遇到在执行某些操作时需要进行很多条件的验证。
比如说在用户在订购一个商品时,我们就需要进行用户认证、库存校验、账户校验等等操作,只有经过这些处理后才能正常执行操作。
如果我们在订购的代码里加上这些校验,就会变成下面的这样:
如果我们后续,需要添加更多的校验或者取消某些校验,这样会导致代码变得越来越多, 也越来越混乱。
当出现此类的逻辑,设计模式建议我们使用责任链模式。把处理逻辑连成一个链,链上的每个节点都可以跳转到下一个节点上。当需要处理的对象经过每个节点时,节点只需处理自己的逻辑,处理完成后调用下一个节点,直到走完所有的节点。
在员工请假流程中,公司规定:
请假天数3天内,部门经理审批即可,
请假天数大于3天的需要再通过老板审批后才能请假。
根据实例说明,我们可以定义部门经理的处理类和老板处理类,当请假天数3天内,部门经理就进行审核;
审核完成后流向老板处理类,老板处理类判断,发现天数在3天以内就继续往下放行,大于3天就进行审核。
源码:gitee地址(点击跳转)