避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
UML图:
示例代码:
abstract class AbstractHandler { public AbstractHandler NextHandler { get; set; } public abstract void Requst(int vlaue); }
class HandlerA:AbstractHandler { public override void Requst(int vlaue) { if (vlaue<10) { Console.WriteLine("A处理"); } else { this.NextHandler.Requst(vlaue); } } }
class HandlerB:AbstractHandler { public override void Requst(int vlaue) { if (vlaue >= 10) { Console.WriteLine("B处理"); } else { this.NextHandler.Requst(vlaue); } } }
class Program { static void Main(string[] args) { HandlerA a =new HandlerA(); HandlerB b =new HandlerB(); a.NextHandler = b; a.Requst(9); } }