这是一个请求处理1,2,3的故事
//抽象处理类
using UnityEngine;
public abstract class AResponde {
private AResponde up;
private string type;
public AResponde(string t)
{
type = t;
}
public void SetUp(AResponde r)
{
up = r;
}
public void HandleRequest(int num)
{
if (Handle(num))
{
Debug.Log(type + "处理了");
}
else {
if (up != null)
{
up.HandleRequest(num);
}
else {
Debug.Log("无法处理");
}
}
}
//私有的处理方法
protected abstract bool Handle(int num);
}//具体处理类1,2和3类似处理的2、3
public class OneResponde : AResponde {
public OneResponde(string t):base(t){ }
protected override bool Handle(int num)
{
//一顿操作
if (num == 1) return true;
return false;
}
}//使用测试
using UnityEngine;
public class testZRL : MonoBehaviour {
void Start () {
OneResponde one = new OneResponde("one");
TwoResponde two = new TwoResponde("two");
ThereResponde there = new ThereResponde("three");
there.SetUp(two);
two.SetUp(one);
there.HandleRequest(1);
there.HandleRequest(2);
there.HandleRequest(3);
there.HandleRequest(10);
}
}全程主要在于抽象的处理类的处理请求方法,他负责关注当前处理类能不能完成处理,如果不能就请由上级进行处理,直到有一个处理类能够处理或则不能处理了。