当前位置: 首页 > news >正文

责任链模式简单实现

两种实现方式

第一种

public interface IBaseTask {public void doAction(String isTask,IBaseTask iBaseTask);
}
public class ChainManager implements IBaseTask{//工作类的集合private List<IBaseTask> iBaseTaskList = new ArrayList<>();public void addTask(IBaseTask iBaseTask){iBaseTaskList.add(iBaseTask);}//下标private int index = 0;@Overridepublic void doAction(String isTask, IBaseTask iBaseTask) {if(iBaseTaskList.isEmpty()){};if (index >= iBaseTaskList.size()){return;}//获取对应下标的任务对象IBaseTask baseTask = iBaseTaskList.get(index);index ++;//执行任务baseTask.doAction(isTask,iBaseTask);}
}

//创建三个责任链对象

public class TaskOne implements IBaseTask{@Overridepublic void doAction(String isTask, IBaseTask iBaseTask) {if ("1".equals(isTask)) {System.out.println("拦截器1处理了");}else{iBaseTask.doAction(isTask,iBaseTask);}}
}
public class TaskTwo implements IBaseTask{@Overridepublic void doAction(String isTask, IBaseTask iBaseTask) {if ("2".equals(isTask)) {System.out.println("拦截器2处理了");}else{iBaseTask.doAction(isTask,iBaseTask);}}
}
public class TaskThree implements IBaseTask{@Overridepublic void doAction(String isTask, IBaseTask iBaseTask) {if ("3".equals(isTask)) {System.out.println("拦截器3处理了");}else{iBaseTask.doAction(isTask,iBaseTask);}}
}

执行

private void zerenlian1() {ChainManager chainManager = new ChainManager();chainManager.addTask(new TaskOne());chainManager.addTask(new TaskTwo());chainManager.addTask(new TaskThree());//从TaskOne开始执行不对的话就自动执行TaskTwochainManager.doAction("2",chainManager);//返回结果 "拦截器2处理了"}

第二种

public abstract class BaseTask {private boolean isTask;public BaseTask(boolean isTask) {this.isTask = isTask;}private BaseTask nextTask;public void addTask(BaseTask nextTask){this.nextTask = nextTask;}public abstract void doAction();public void action(){if(isTask){doAction();}else{if(nextTask != null){nextTask.action();}}}
}
public class Task1 extends BaseTask{public Task1(boolean isTask) {super(isTask);}@Overridepublic void doAction() {System.out.println("节点1已被执行");}
}
    private void zerenlian() {Task1 task1 = new Task1(false);Task2 task2 = new Task2(false);Task3 task3 = new Task3(true);task1.addTask(task2);task2.addTask(task3);task1.action();}
http://www.lryc.cn/news/129507.html

相关文章:

  • Excel自动化办公——Openpyxl的基本使用
  • 解决Fastjson2 oom(Out Of Memory),支持大对象(LargeObject 1G)json操作
  • SpringBoot + redis处理购物车逻辑
  • open cv学习 (五) 图像的阈值处理
  • NVIDIA vGPU License许可服务器高可用全套部署秘籍
  • 基于CNN卷积神经网络的口罩检测识别系统matlab仿真
  • 《HeadFirst设计模式(第二版)》第九章代码——迭代器模式
  • Electron入门,项目启动。
  • 深入理解索引B+树的基本原理
  • vue3 简易用对话框实现点击头像放大查看
  • opencv 矩阵运算
  • 第四章 字符串part01
  • Python3内置函数大全
  • 什么是“新型基础设施”?建设重点是什么?
  • 混杂接口模式---vlan
  • Greenplum多级分区表添加分区报错ERROR: no partitions specified at depth 2
  • EV PV AC SPI CPI TCPI
  • 【电商领域】Axure在线购物商城小程序原型图,品牌自营垂直电商APP原型
  • Cpp基础Ⅰ之编译、链接
  • 用户新增预测(Datawhale机器学习AI夏令营第三期)
  • RGOS日常管理操作
  • 阿里云使用WordPress搭建个人博客
  • 供应链安全和第三方风险管理:讨论如何应对供应链中的安全风险,以及评估和管理第三方合作伙伴可能带来的威胁
  • 《Java极简设计模式》第04章:建造者模式(Builder)
  • Go download
  • 2023年Java核心技术面试第四篇(篇篇万字精讲)
  • 数字化时代,数据仓库和商业智能BI系统演进的五个阶段
  • 【【Verilog典型电路设计之FIFO设计】】
  • JAVA设计模式总结之23种设计模式
  • Flutter 测试小结