将请求的发送者和接收者解耦,多个对象都有机会处理请求,形成链式结构。
// 处理器抽象类
public abstract class Handler
{
protected Handler _nextHandler;
public void SetNext(Handler next) => _nextHandler = next;
public abstract void HandleRequest(int level);
}
// 具体处理器1
public class Handler1 : Handler
{
public override void HandleRequest(int level)
{
if (level == 1)
{
Console.WriteLine("Handler1 处理请求");
}
else
{
_nextHandler?.HandleRequest(level);
}
}
}
// 具体处理器2
public class Handler2 : Handler
{
public override void HandleRequest(int level)
{
if (level == 2)
{
Console.WriteLine("Handler2 处理请求");
}
else
{
_nextHandler?.HandleRequest(level);
}
}
}
// 调用示例
public static void TestChain()
{
Handler h1 = new Handler1();
Handler h2 = new Handler2();
h1.SetNext(h2);
h1.HandleRequest(1); // Handler1处理
h1.HandleRequest(2); // Handler2处理
}