首页 > 编程 > C# > 正文

C#职责链模式实例详解

2020-01-24 01:37:05
字体:
来源:转载
供稿:网友

本文实例讲述了C#职责链模式。分享给大家供大家参考。具体如下:

ConcreteHandler1.cs如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{  public class ConcreteHandler1:Handler  {    public override void HandRequest(int request)    {      if(request>0&&request<10)      {        Console.WriteLine("{0} 处理请求 {1}",this.GetType().Name,request);      }      else if(successor!=null)      {        successor.HandRequest(request);      }    }  }}

ConcreteHandler2.cs如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{  public class ConcreteHandler2:Handler  {    public override void HandRequest(int request)    {      if (request > 10 && request < 20)      {        Console.WriteLine("{0} 处理请求 {1}", this.GetType().Name, request);      }      else if (successor != null)      {        successor.HandRequest(request);      }    }  }}

ConcreteHandler3.cs如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{  public class ConcreteHandler3:Handler  {    public override void HandRequest(int request)    {      if (request > 20 && request < 30)      {        Console.WriteLine("{0} 处理请求 {1}", this.GetType().Name, request);      }      else if (successor != null)      {        successor.HandRequest(request);      }    }  }}

Handler.cs如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{  public abstract class Handler  {    protected Handler successor;    public void SetSuccessor(Handler successor)     {      this.successor = successor;    }    public abstract void HandRequest(int request);  }}

Program.cs如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{  class Program  {    static void Main(string[] args)    {      Handler h1 = new ConcreteHandler1();      Handler h2 = new ConcreteHandler2();      Handler h3 = new ConcreteHandler3();      h1.SetSuccessor(h2);      h2.SetSuccessor(h3);      int[] requests = {2,5,14,22,18,3,27,20};      foreach(int request in requests)      {        h1.HandRequest(request);      }      Console.ReadKey();    }  }}

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表