当前位置:   article > 正文

职责链模式(Chain of Responsibility Pattern)_职责链模式 英文

职责链模式 英文

 

职责链模式(Chain Of Responsibility Pattern):避免将一个请求的发送者和接收者耦合在一起,让多个对象都有机会处理请求,将接受请求的对象连接成一条链,并且沿着链传递请求,知道有一个对象能狗处理它为止

 职责链模式的结构

Handler(抽象处理者):它定义一个处理请求的接口,由于不同的具体处理者处理请求不同,因此在处理者中定义一个处理请求的方法,每个处理者的下一个处理者还是一个处理者,所以我们通过定义一个抽象的处理者指定下一个处理者的successor引用作为下一个处理者的关联,通过该引用处理者可以连成一条链。

  1. abstract class Handler
  2. {
  3. protected Handler successor;
  4. public void SetHandler(Handler handler)
  5. {
  6. this.successor = handler;
  7. }
  8. public abstract void HandleRequest();
  9. }

ConcreteHandler(具体处理者):处理用户传过来的请求,是抽象处理者的子类,通过调用具体处理者的方法我们可以判断是否能终止这条链,或者将处理转发到下一个具体处理者。

  1. class ConcreteHandlerA : Handler
  2. {
  3. public override void HandleRequest()
  4. {
  5. if (successor == null)
  6. {
  7. Console.WriteLine("A终止");
  8. }
  9. else
  10. {
  11. //传递
  12. this.successor.HandleRequest();
  13. }
  14. }
  15. }
  16. class ConcreteHandlerB : Handler
  17. {
  18. public override void HandleRequest()
  19. {
  20. if (successor == null)
  21. {
  22. Console.WriteLine("B终止");
  23. }
  24. else
  25. {
  26. //传递
  27. this.successor.HandleRequest();
  28. }
  29. }
  30. }

调用

  1. Handler handler1 = new ConcreteHandlerA();
  2. Handler handler2 = new ConcreteHandlerB();
  3. handler1.SetHandler(handler2);
  4. //执行
  5. handler1.HandleRequest();

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/802054
推荐阅读
相关标签
  

闽ICP备14008679号