沈阳网站前端,太原做网站联系方式,保山网站开发,浙江网站建设画册设计一、概要 定义#xff1a;责任链模式是一种行为设计模式#xff0c; 允许你将请求沿着处理者链进行发送。收到请求后#xff0c; 每个处理者均可对请求进行处理#xff0c; 或将其传递给链上的下个处理者。
二、应用场景#xff1a; 1.多条件流程判断#xff1a;权限相关…一、概要 定义责任链模式是一种行为设计模式 允许你将请求沿着处理者链进行发送。收到请求后 每个处理者均可对请求进行处理 或将其传递给链上的下个处理者。
二、应用场景 1.多条件流程判断权限相关控制 2.过滤器在Servlet中过滤器就是使用责任链模式实现的。每个过滤器都可以决定是否处理请求或者将其转发给下一个过滤器进行处理。 3.异常处理在Java中可以使用责任链模式来处理异常。首先程序先尝试使用自定义的异常处理器来处理异常如果该处理器无法处理异常则将其转发给下一个处理器进行处理。
三、使用案例 1.首先先定义一个抽象类
public abstract class ChainHandler {private ChainHandler processor;public void setNextProcessor(ChainHandler processor){this.processorprocessor;}public abstract void handlerRequest();
}
2.接着我们定义2个实现类。 第一个
import java.util.Objects;public class FirstStepHandler extends ChainHandler{private ChainHandler processor;private Object obj;public FirstStepHandler(Object obj){this.objobj;}Overridepublic void setNextProcessor(ChainHandler processor){this.processorprocessor;}Overridepublic void handlerRequest() {if(Objects.isNull(obj)) {System.out.println(责任链第一步处理处理完成到此结束);return;}System.out.println(责任链第一步处理处理完成流转下一步);if (Objects.isNull(processor)) {System.out.println(责任链已到底);return;}processor.handlerRequest();}
}
第二个
import java.util.Objects;public class SecondStepHandler extends ChainHandler{private ChainHandler processor;private Object obj;public SecondStepHandler(Object obj){this.objobj;}Overridepublic void setNextProcessor(ChainHandler processor){this.processorprocessor;}Overridepublic void handlerRequest() {if(Objects.isNull(obj)) {System.out.println(责任链第二步处理处理完成到此结束);return;}System.out.println(责任链第二步处理处理完成流转下一步);if (Objects.isNull(processor)) {System.out.println(责任链已到底);return;}processor.handlerRequest();}
}3.最后我们可以测试一下。
public class ChainMain {public static void main(String[] args) {ChainHandler chainOne new FirstStepHandler(new Object());ChainHandler chainTwo new SecondStepHandler(new Object());chainOne.setNextProcessor(chainTwo);chainOne.handlerRequest();}
}结果如下 大家有兴趣可以了解下。