浅析Java责任链模式实现
作者:小教学发布时间:2023-09-26分类:程序开发学习浏览:68
导读:一、概要定义:责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。二、应用场景:1...
一、概要
定义:责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。
二、应用场景:
1.多条件流程判断:权限相关控制
2.过滤器:在Servlet中,过滤器就是使用责任链模式实现的。每个过滤器都可以决定是否处理请求,或者将其转发给下一个过滤器进行处理。
3.异常处理:在Java中,可以使用责任链模式来处理异常。首先,程序先尝试使用自定义的异常处理器来处理异常,如果该处理器无法处理异常,则将其转发给下一个处理器进行处理。
三、使用案例
1.首先先定义一个抽象类
public abstract class ChainHandler {
private ChainHandler processor;
public void setNextProcessor(ChainHandler processor){
this.processor=processor;
}
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.obj=obj;
}
@Override
public void setNextProcessor(ChainHandler processor){
this.processor=processor;
}
@Override
public 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.obj=obj;
}
@Override
public void setNextProcessor(ChainHandler processor){
this.processor=processor;
}
@Override
public 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();
}
}
结果如下:
大家有兴趣可以了解下。
- 程序开发学习排行
-
- 1鸿蒙HarmonyOS:Web组件网页白屏检测
- 2HTTPS协议是安全传输,为啥还要再加密?
- 3HarmonyOS鸿蒙应用开发——数据持久化Preferences
- 4记解决MaterialButton背景颜色与设置值不同
- 5鸿蒙HarmonyOS实战-ArkUI组件(RelativeContainer)
- 6鸿蒙HarmonyOS实战-ArkUI组件(Stack)
- 7鸿蒙HarmonyOS实战-ArkUI组件(GridRow/GridCol)
- 8[Android][NDK][Cmake]一文搞懂Android项目中的Cmake
- 9鸿蒙HarmonyOS实战-ArkUI组件(mediaquery)
- 最近发表
-
- WooCommerce最好的WordPress常用插件下载博客插件模块的相关产品
- 羊驼机器人最好的WordPress常用插件下载博客插件模块
- IP信息记录器最好的WordPress常用插件下载博客插件模块
- Linkly for WooCommerce最好的WordPress常用插件下载博客插件模块
- 元素聚合器Forms最好的WordPress常用插件下载博客插件模块
- Promaker Chat 最好的WordPress通用插件下载 博客插件模块
- 自动更新发布日期最好的WordPress常用插件下载博客插件模块
- WordPress官方最好的获取回复WordPress常用插件下载博客插件模块
- Img to rss最好的wordpress常用插件下载博客插件模块
- WPMozo为Elementor最好的WordPress常用插件下载博客插件模块添加精简版