0
点赞
收藏
分享

微信扫一扫

OpenIPC开源IPC之重要源码包

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

举报

相关推荐

0 条评论