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! ");
}
}
}
}
}
C#设计模式-责任链模式
猜你喜欢
转载自blog.csdn.net/qq_37273889/article/details/85062128
今日推荐
周排行