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

概念

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

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

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

相关推荐
好奇龙猫1 分钟前
【AI学习-comfyUI学习-三十三节-FLXUcontrolnet canny(UNion)+canny(xlabs)工作流-各个部分学习】
人工智能·学习
万里不留行2 分钟前
【LangChain V1.0学习】第二课:批处理与持久化对话(通过完成情感机器人多轮对话进行学习)
人工智能·python·学习·语言模型·langchain
啵啵鱼爱吃小猫咪4 分钟前
机器人示教学习入门介绍
人工智能·学习·机器人
菜鸟江多多6 分钟前
【国内首款STM32 Zephyr RTOS学习套件】
stm32·嵌入式硬件·学习
芸简新章10 分钟前
Node.js学习阶段总结-阶段2
学习·node.js
saoys19 分钟前
Opencv 学习笔记:霍夫变换实现图像中圆的精准检测与绘制
笔记·opencv·学习
IT永勇21 分钟前
c++设计模式-观察者模式
c++·观察者模式·设计模式
wdfk_prog23 分钟前
[Linux]学习笔记系列 -- [driver][base]class
linux·笔记·学习
Darkershadow23 分钟前
蓝牙学习之Provision(6)Provison Complete
学习·蓝牙·ble·mesh
ct97823 分钟前
Cesium中的CZML
学习·gis·cesium