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

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

概念

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

代码编写
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.kler.cn/a/291763.html

相关文章:

  • 学习日记_20241117_聚类方法(高斯混合模型)
  • 抽象java入门1.5.3.1——类的进阶
  • 【.NET 8 实战--孢子记账--从单体到微服务】--简易权限--完善TODO标记的代码
  • SpringBoot实现WebSocket
  • C++ 编程基础(5)类与对象 | 5.8、面向对象五大原则
  • 深度学习--卷积神经网络
  • 结构型设计模式--装饰模式
  • 【Spring Boot-Spring Boot配置文件分类】
  • 前端面试题总结(HTML篇和CSS篇)
  • Spring Boot应用中集成与使用多数据源
  • 【ES常用查询操作】
  • Java项目: 基于SpringBoot+mysql高校心理教育辅导管理系统分前后台(含源码+数据库+开题报告+毕业论文)
  • sql日期函数
  • C++/Qt 多媒体(续五)
  • web前端基础笔记(六)
  • [数据集][目标检测]轮胎缺陷检测数据集VOC+YOLO格式2154张4类别
  • 2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整思路
  • 爬虫使用代理IP返回405:原因及解决方法
  • 第十八章 rust字符串String详解
  • btrace 开源!基于 Systrace 高性能 Trace 工具
  • SprinBoot+Vue二手回收微信小程序的设计与实现
  • 网络编程day01(IP地址、Socket、端口号)
  • 二进制方式安装K8S
  • 前端请求的路径baseURL怎么来的 ?nodejs解决cors问题的一种方法
  • 【Next】2. 项目构建
  • 基于esp32的智能分拣系统