C#職責鏈形式實例詳解。本站提示廣大學習愛好者:(C#職責鏈形式實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C#職責鏈形式實例詳解正文
本文實例講述了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#法式設計有所贊助。