這篇文章主要介紹了C#職責鏈模式,以實例形式完整分析了C#職責鏈模式的相關技巧與實現(xiàn)方法,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了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#程序設計有所幫助。
新聞熱點
疑難解答