C#設計模式-責任鏈模式
阿新 • • 發佈:2019-01-03
using System; using System.Collections.Generic; namespace TestCSharp { class Program { static void Main(string[] args) { Executor designer = new Designer(); Executor developer = new Developer(); Executor tester = new Tester(); designer.NextExecutor = developer; developer.NextExecutor = tester; designer.Execute(new Task()); Console.ReadKey(); } class Task { // full value is 100. public int Progress { set; get; } } abstract class Executor { public Executor NextExecutor { set; get; } public abstract void Execute(Task task); } class Designer : Executor { public override void Execute(Task task) { task.Progress += 40; if (task.Progress >= 40) { Console.WriteLine("designer part done! "); NextExecutor.Execute(task); } } } class Developer : Executor { public override void Execute(Task task) { task.Progress += 40; if (task.Progress >= 80) { Console.WriteLine("developer part done! "); NextExecutor.Execute(task); } } } class Tester : Executor { public override void Execute(Task task) { task.Progress += 20; if (task.Progress >= 100) { Console.WriteLine("complete the task! "); } } } } }