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

概念

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

代码编写
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);}}}
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《从C/C++到Java入门指南》- 26.record 类+多态

record 类多态 前言 由于 record 类比较简单&#xff0c;将他和多态放在一节中。 record 类 final类是从 Java 16开始才正式发布的&#xff0c;可以理解为一个final class&#xff0c;提供了一种更简洁紧凑的定义final类的方式。 public record Clock(int hours, int minu…

【golang-入门】环境配置、VSCode开发环境配置

golang介绍基础信息 windows环境配置安装包下载安装环境变量设置检查 VSCode开发配置插件配置在 Visual Studio Code 中安装通义灵码go hello word 参考资料 golang介绍 基础信息 golang官网&#xff1a;https://go.dev/golang学习网&#xff1a;https://studygolang.com/使用…

【嵌入式学习笔记】STM32中断配置及相关知识

中断 中断配置 1、使能GPIO 2、使能系统时钟 3、配置引脚 4、配置映射关系 5、配置EXTI 6、启用并设置EXTI #include "stm32f4xx.h" // Device header #include "sys.h" #include "delay.h" #include "led.h"…

ARM基础知识---CPU---处理器

目录 一、ARM架构 1.1.RAM---随机存储器 1.2.ROM---只读存储器 1.3.flash---闪存存储器 1.4.时钟&#xff08;振晶&#xff09; 1.5.复位 二、CPU---ARM920T 2.1.R0~R12---通用寄存器 2.2.PC程序计数器 2.3.LR连接寄存器 2.4.SP栈指针寄存器 2.5.CPSR当前程序状态寄存…

测试:TestGRPCDiscovery

目录 测试:TestGRPCDiscovery 类定义 方法 async def asyncSetUp(self): async def asyncTearDown(self): async def test_discovery(self): 总结 这是一个关于算力共享中环形结构通讯机制的项目图的功能模型解释。以下是根据所给信息对项目功能的概述: 项目结构: 项…

Windows 下载安装RabbitMQ

环境描述 windows10 Erlang 26.2.x 版本 RabbitMQ 3.13.7 因为RabbitMQ是Erlang语言开发的&#xff0c;所以必须安装 Erlang RabbitMQ官网链接: https://www.rabbitmq.com/docs/which-erlang 1.下载并安装Erlang 26.2.5 1.1下载Erlang 26.2.5 https://erlang.org/dow…

深度强化学习算法(四)(附带MATLAB程序)

深度强化学习&#xff08;Deep Reinforcement Learning, DRL&#xff09;结合了深度学习和强化学习的优点&#xff0c;能够处理具有高维状态和动作空间的复杂任务。它的核心思想是利用深度神经网络来逼近强化学习中的策略函数和价值函数&#xff0c;从而提高学习能力和决策效率…

鸿誉移民:定制化移民服务,吹响全球高效率移民的嘹亮号角!

鸿誉移民&#xff1a;定制化移民服务&#xff0c;吹响全球高效率移民的嘹亮号角&#xff01; 作为国内知名海外移民服务机构&#xff0c;鸿誉移民历经多年行业沉淀&#xff0c;拥有着极其丰富的移民咨询以及移民办理经验&#xff0c;并以咨询及时精准&#xff0c;签证快捷、通…

【数据结构】Map的使用与注意事项

文章目录 概念模型Map 的使用put() 和 get()getOrDefault()remove()keySet()entrySet() 注意事项 概念 Map 和 set 是一种专门用来进行搜索的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关。 以前常见的搜索方式有&#xff1a; 直接遍历&#xff0c;时间…

URP简洁的instance的写法

材质还是要开启enable instance&#xff0c;这是上一次的写法 https://dbbh666.blog.csdn.net/article/details/136644181 最近发现更适合我个人的习惯的写法 就是代码控制这个整个过程 C#代码是这样的&#xff0c;获取一个mesh&#xff0c;获取每个mesh的transform&#xff0c…

常见的性能测试方法!

前言 性能测试划分有很多种&#xff0c;测试方法也有很多种&#xff0c;更确切的说是由于测试方法的不同决定了测试划分的情况&#xff0c;但在测试过程中性能测试的划分没有绝对的界限&#xff0c;常用的有压力测试、负载测试和并发用户测试等。 性能测试的方法主要包括以下…

stm32之硬件I2C读写MPU6050陀螺仪、加速度传感器应用案例

系列文章目录 1. stm32之I2C通信协议 2. stm32之软件I2C读写MPU6050陀螺仪、加速度传感器应用案例 3. stm32之I2C通信外设 文章目录 系列文章目录前言一、电路接线图二、应用案例代码三、应用案例分析3.1 基本思路3.2 相关库函数介绍3.3 MPU6050模块3.1.1 模块初始化3.1.2 指定…

52 mysql 启动过程中常见的相关报错信息

前言 我们这里主要是看一下 service mysql start, service mysql stop 的过程中的一些常见的错误问题 这些 也是之前经常碰到, 但是 每次都是 去搜索, 尝试 1, 2, 3, 4 去解决问题 但是 从来未曾思考过 这个问题到底是 怎么造成的 The server quit without updating PID fil…

【系统架构设计】开发管理

【系统架构设计】开发管理 前言项目的范围、时间与成本项目范围管理项目时间管理项目成本管理 配置管理和文档管理配置管理文档管理 软件需求管理人力资源管理软件的运行与评价软件过程改进 前言 影响软件研发项目全局的因素是管理水平&#xff0c;而技术只影响局部&#xff0…

vrrp协议,主备路由器的选举

当VRRP备份组中的所有备份路由器&#xff08;BACKUP&#xff09;具有相同的优先级时&#xff0c;选举新的主路由器&#xff08;MASTER&#xff09;的过程将基于以下规则&#xff1a; IP地址优先&#xff1a;如果备份路由器的优先级相同&#xff0c;那么具有最高IP地址的路由器…

深入理解XML与JSON:数据交换格式的比较与应用

1.XML与JSON的概念 XML是一种标记语言&#xff0c;它允许开发者定义自己的标签来描述数据。其结构由元素、属性和文本内容组成。格式如下&#xff1a; <bookstore><book><title>XML Developers Guide</title><author>John Doe</author>&…

我的sql我做主!Mysql 的集群架构详解之组从复制、半同步模式、MGR、Mysql路由和MHA管理集群组

目录 Mysql 集群技术一、Mysql 在服务器中的部署方法1.1 在Linux下部署mysql1.1.1 安装依赖性&#xff1a;1.1.2 下载并解压源码包1.1.3 源码编译安装mysql1.1.4 部署mysql 二、Mysql的组从复制2.1 配置mastesr2.2 配置salve2.3 当有数据时添加slave22.4 延迟复制2.5 慢查询日志…

Python爬虫02

xml 和html 区别 jsonpath模块 场景 多层嵌套的复杂字典直接提取数据 安装 pip install jsonpath使用 from jsonpath import jsonpathret jsonpath(dict, jaonpath语法规则字符串)语法规则 eg: lxml模块&xpath语法 谷歌浏览器 xpath helper 插件 作用对当前页面…

Oracle(ORA-00210、ORA-00202)控制文件错误

现象描述 数据库启动失败&#xff0c;系统显示如下错误信息&#xff1a; ORA-00210: cannot open the specified control file ORA-00202: control file: /opt/workshop/omu/database/control03.ctl可能原因可能原因 控制文件错误导致数据库启动失败。 处理步骤 以oracle用…

HIS系统|HIS系统开发源码

在数字医疗时代&#xff0c;医院信息系统&#xff08;HIS&#xff09;的开发至关重要。本文将深入探讨在开发HIS系统时需要关注的主要事项&#xff0c;从系统架构到数据安全&#xff0c;为医疗机构提供实用的开发指南。 1、需求分析与系统规划 在开发HIS系统的初期&#xff0c…