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

责任链模式(Chain of Responsibility)

责任链模式是对象的行为模式。使多个对象都有机会处理请求,从而避免请求的发送者和接受者直接的耦合关系。
public abstract class Handler {protected Handler successor;public abstract void handlerRequest(String condition);protected Handler getSuccessor() {return successor;}public void setSuccessor(Handler successor) {this.successor = successor;}
}public class ConcreteHandler1 extends Handler{@Overridepublic void handlerRequest(String condition) {// TODO Auto-generated method stub// 如果是自己的责任,就自己处理,负责传给下家处理if(condition.equals("ConcreteHandler1")){System.out.println( "ConcreteHandler1 handled ");return ;}else{System.out.println( "ConcreteHandler1 passed ");getSuccessor().handlerRequest(condition);}
}public class ConcreteHandler2 extends Handler{@Overridepublic void handlerRequest(String condition) {// TODO Auto-generated method stub// 如果是自己的责任,就自己处理,负责传给下家处理if(condition.equals("ConcreteHandler2")){System.out.println( "ConcreteHandler2 handled ");return ;}else{System.out.println( "ConcreteHandler2 passed ");getSuccessor().handlerRequest(condition);}}
}public class ConcreteHandlerN extends Handler{@Overridepublic void handlerRequest(String condition) {// TODO Auto-generated method stubSystem.out.println( "ConcreteHandlerN handled");}
}//测试
Handler handler1 = new ConcreteHandler1();
Handler handler2 = new ConcreteHandler2();
Handler handlern = new ConcreteHandlerN();
//链起来
handler1.setSuccessor(handler2);
handler2.setSuccessor(handlern);
//假设这个请求是ConcreteHandler2的责任
handler1.handlerRequest("ConcreteHandler2");public static void main(String[] args) {// TODO Auto-generated method stubHandler handler1 = new ConcreteHandler1();Handler handler2 = new ConcreteHandler2();Handler handlern = new ConcreteHandlerN();		//链起来handler1.setSuccessor(handler2);handler2.setSuccessor(handlern);		//假设这个请求是ConcreteHandler2的责任handler1.handlerRequest("ConcreteHandler2");
}

http://www.lryc.cn/news/217418.html

相关文章:

  • 文件管理技巧:根据大小智能分类并移动至目标文件夹
  • 具有自主产权的SaaS门店收银系统全套源码输出
  • 论文阅读:One Embedder, Any Task: Instruction-Finetuned Text Embeddings
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • 软件测试---边界值分析(功能测试)
  • 使用pytorch处理自己的数据集
  • http进一步认识
  • grafana docker安装
  • 【Kubernetes】初识k8s--扫盲阶段
  • “01”滴答“摩尔斯电码”加密解密单个字符
  • P3817 小A的糖果
  • Yolov8目标识别与实例分割——算法原理详细解析
  • HandlerMethodArgumentResolver方法参数解析器支持多用户
  • 【Linux】 man命令使用
  • 同一个数据库服务器进行数据表间的数据迁移-MySQL
  • 适用于 Linux 的 WPF:Avalonia
  • 【教3妹学编程-算法题】数组中两个数的最大异或值
  • STM32-RTC实时时钟
  • 初学Flutter,实现底部导航切换
  • 使用JMeter进行接口压力测试
  • ElasticSearch集群架构实战及其原理剖析
  • 选择适合你的办公桌:提高工作效率的关键
  • 机器学习之多层感知机 MLP简洁实现 《动手深度学习》实例
  • 使用C#在Windows上调用7-zip压缩文件
  • 京东数据平台:2023年Q3季度黄金市场数据分析
  • https原理
  • FFmpeg直播能力更新计划与新版本发布
  • 面试算法55:二叉搜索树迭代器
  • Linux Crontab 定时任务
  • HiveSQL高级进阶技巧