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