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

设计模式学习-责任链模式

概念

使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止.

代码编写
using UnityEngine;
using System.Collections;
public class ChainOfResponsbilityStucture :MonoBehaviour{void Start{Handler h1 = new ConcreteHandler1();Handler h2 = new ConcreteHandler2();Handler h3 = new ConcreteHandler3();//设置自己的 “领导”h1.SetSuccessor(h2);h2.SetSuccessor(h3);//测试int[] requests = { 2, 5, 14, 22, 18, 3, 27, 20 };foreach (int request in requests){h1.HandleRequest(request);}}//声明一个抽象类规范子类的行为abstract class Handler{protected Handler successour;public void SetSuccessour(Handler successour){this.successour= successour;}public void abstract RequestHandler(int request);}public class ConcreteHandler1:Handler{public override void RequestHandler(int request){if(request>=0 &&request < 10){Debug.Log($"交给我处理{this.GetType().Name}handled request {request}");}else if(successour != null){successor.RequestHandler(request);}}}public class ConcreteHandler2:Handler{public override void RequestHandler(int request){if(request>=10 &&request < 20){Debug.Log($"交给我处理{this.GetType().Name}handled request {request}");}else if(successour != null){successor.RequestHandler(request);}}}public class ConcreteHandler3:Handler{public override void RequestHandler(int request){if(request>=20 &&request < 50){Debug.Log($"交给我处理{this.GetType().Name}handled request {request}");}else if(successour != null){successor.RequestHandler(request);}}}
}

主旨就是“你完不成就要找到你上司让他完成,你上次完不成就找上司的上司。。。”

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JVM系列(十) -垃圾收集器介绍
  • 【阿里云】个人认证与公司认证
  • 目标检测-YOLOv10
  • VMEMMAP分析
  • [阅读笔记]《解读基金—我的投资观与实践》— 季凯帆
  • windows下安装elasticSearch和kibana
  • C++——list的实现
  • 部署若依Spring boot项目
  • 【鸿蒙HarmonyOS NEXT】调用后台接口及List组件渲染
  • 一台笔记本电脑的硬件都有哪些以及对应的功能
  • WPF在MVVM架构下使用DataGrid并实现行删除
  • 广度优先搜索Breadth-First-Search
  • 【基础】Three.js加载纹理贴图、加载外部gltf格式文件
  • Ext JS主要特点有哪些?
  • uniapp+vue3实现小程序和h5解压线上压缩包以及如何访问解压后的视频地址
  • “大数据应用场景”之隔壁老王(连载四)
  • 【Linux系统编程】快速查找errno错误码信息
  • 【面试系列】之二:关于js原型
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Date型的使用
  • Docker容器管理
  • js
  • leetcode388. Longest Absolute File Path
  • Meteor的表单提交:Form
  • nginx 负载服务器优化
  • node.js
  • Object.assign方法不能实现深复制
  • opencv python Meanshift 和 Camshift
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 实战|智能家居行业移动应用性能分析
  • 在Mac OS X上安装 Ruby运行环境
  • 【干货分享】dos命令大全
  • Python 之网络式编程
  • 阿里云API、SDK和CLI应用实践方案
  • #if 1...#endif
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (02)Unity使用在线AI大模型(调用Python)
  • (2)STM32单片机上位机
  • (39)STM32——FLASH闪存
  • (C语言)fgets与fputs函数详解
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (含笔试题)深度解析数据在内存中的存储
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (五)MySQL的备份及恢复
  • (转)Linq学习笔记
  • (转)Linux下编译安装log4cxx
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .Net Core 中间件与过滤器
  • .net mvc部分视图
  • .net 无限分类
  • .NET简谈设计模式之(单件模式)
  • .NET开源项目介绍及资源推荐:数据持久层