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

概念

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

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

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

相关推荐
Alan-Xia19 分钟前
使用jest测试用例之入门篇
前端·javascript·学习·测试用例
三天不学习26 分钟前
uniapp x 学习之 uts 语言快速入门
学习·uni-app
蓑衣客VS索尼克2 小时前
无感方波开环强拖总结
经验分享·单片机·学习
肥肠可耐的西西公主2 小时前
前端(AJAX)学习笔记(CLASS 4):进阶
前端·笔记·学习
云上艺旅3 小时前
K8S学习之基础十五:k8s中Deployment扩容缩容
学习·docker·云原生·kubernetes·k8s
亭墨3 小时前
linux0.11内核源码修仙传第五章——内存初始化(主存与缓存)
linux·c语言·驱动开发·学习·缓存·系统架构
凡人的AI工具箱4 小时前
PyTorch深度学习框架60天进阶学习计划第14天:循环神经网络进阶
人工智能·pytorch·python·深度学习·学习·ai编程
傍晚冰川4 小时前
【江协科技STM32】ADC数模转换器-学习笔记
笔记·科技·stm32·单片机·嵌入式硬件·学习
知识分享小能手4 小时前
Html5学习教程,从入门到精通, HTML5 新的 Input 类型:语法知识点与案例代码(16)
开发语言·前端·学习·html·html5·web·java开发
小呀小萝卜儿5 小时前
2025-03-08 学习记录--C/C++-PTA 习题10-2 递归求阶乘和
c语言·学习