职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。
将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 职责链模式
{
abstract class Handler
{
protected Handler suc; //设置继任者
public void SetSu(Handler suc) //设置继任者
{
this.suc = suc;
}
public abstract void HandlerRe(int re);
}
class Handler1 : Handler
{
public override void HandlerRe(int re)
{
if (re >= 0 && re <= 2)
{
Console.WriteLine("{0}处理请求{1}",this.GetType().Name,re);
}
else if (suc != null)
{
suc.HandlerRe(re);
}
}
}
class Handler2 : Handler
{
public override void HandlerRe(int re)
{
if (re > 2 && re < 10)
{
Console.WriteLine("{0}处理请求{1}", this.GetType().Name, re);
}
else if (suc != null)
{
suc.HandlerRe(re);
}
else
Console.WriteLine("{0}无法处理",re);
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("begin");
Handler h1 = new Handler1();
Handler h2 = new Handler2();
h1.SetSu(h2); //设置继任者
int[] re = { 1,3,4,11};
foreach (int r in re)
{
h1.HandlerRe(r);
}
}
}
}