我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!
设计模式之责任链模式---小白篇
1、什么是责任链模式?
责任链模式其实就是将多个处理器串成一个链,每个处理器都有机会去处理,而请求端不需要知道具体发送到哪个处理器!
2、责任链模式的优缺点有哪些?
优点
- 请求端与处理端解耦,请求端无需知道具体是哪个处理器处理
- 提高代码的灵活性,可以灵活的添加或者更正处理器
缺点
- 如果无效链子很长,会影响性能
3、责任链模式的应用场景有哪些?
主要应用于一些链式场景,比如说Spring 拦截器的前置方法,后置方法,再比如Spring Aop 的 前置通知、环绕通知、后置通知等等,或者请假审批流程,小于3天的经理批准,大于3天的老板批准!
我们就举一个简单的请假审批案例,来看看代码怎么写
处理器抽象类
public abstract class Handler {
protected Handler nextHandler;
public void setNextHandler(Handler nextHandler) {
this.nextHandler = nextHandler;
}
public abstract void process(int num);
}
领导处理器
public class LeaderHandler extends Handler{
@Override
public void process(int num) {
if (num <= 3) {
System.out.println("Leader 审批!");
}else {
nextHandler.process(num);
}
}
}
Boss处理器
public class BossHandler extends Handler{
@Override
public void process(int num) {
System.out.println("Boss 处理!");
}
}
把处理器串成链 测试
public class Demo {
public static void main(String[] args) {
LeaderHandler leaderHandler = new LeaderHandler();
BossHandler bossHandler = new BossHandler();
leaderHandler.setNextHandler(bossHandler);
leaderHandler.process(2);
leaderHandler.process(5);
}
}
感谢大家的阅读,我是Alson_Code,一个喜欢把简单问题复杂化,把复杂问题简单化的程序猿! ❤