责任链模式(Chain of Responsibility Pattern)

意图:为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。

  using System;
 
   class ChainofResponsibilityPattern {
   
     // Chain of responsibility pattern       Judith Bishop June 2007
     
     class Handler {
       Handler next;
       int id;
       public int Limit {get; set;}
       
       public Handler (int id, Handler handler) {
         this.id = id;
         Limit = id*1000;
         next = handler;
       }
       
       public string HandleRequest(int data) {    
         if (data < Limit)
           return "Request for " +data+" handled at level "+id;
         else if (next!=null)
           return next.HandleRequest(data);
         else return ("Request for " +data+" handled BY DEFAULT at level "+id);
       }
     }
 
     static void Main () {
 
       Handler start = null;
       for (int i=5; i>0; i--) {
         Console.WriteLine("Handler "+i+" deals up to a limit of "+i*1000);
         start = new Handler(i,  start);
       }
       
       int [] a = {50,2000,1500,10000,175,4500};
       foreach (int i in a)
         Console.WriteLine(start.HandleRequest(i));
       Console.ReadKey();
     }
   }
 /*
 Handler 5 deals up to a limit of 5000
 Handler 4 deals up to a limit of 4000
 Handler 3 deals up to a limit of 3000
 Handler 2 deals up to a limit of 2000
 Handler 1 deals up to a limit of 1000
 Request for 50 handled at level 1
 Request for 2000 handled at level 3
 Request for 1500 handled at level 2
 Request for 10000 handled BY DEFAULT at level 5
 Request for 175 handled at level 1
 Request for 4500 handled at level 5
 */
 
 

转载于:https://www.cnblogs.com/Clingingboy/archive/2010/08/26/1809596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值