public class Worker
{
private string _Name;
private string _WorkType;
private Worker _NextWorker;
public Worker(string name,string worktype) {
_Name = name;
_WorkType = worktype;
}
public String Name
{
get
{
return _Name;
}
}
public String WorkType
{
get
{
return _WorkType;
}
}
public Worker NextWorker
{
get
{
return _NextWorker;
}
set {
_NextWorker = value;
}
}
protected void Do(string message)
{
Console.WriteLine(string.Format("{0}工人{1}正在处理任务:{2}", new object[] { _WorkType, _Name, message }));
}
public virtual void HandleWork(string message)
{ }
}
职责抽象
职责A
职责B
职责C
职责D
namespace ResponsibilityChainPattern
{
class Program
{
static void Main(string[] args)
{
Worker normalWorkA = new NormalWorker("Jim", "装配工");
Worker normalWorkB = new NormalWorker("Lucy", "装配工");
Worker normalWorkC = new NormalWorker("Bill", "装配工");
Worker normalWorkD = new NormalWorker("Bruce", "装配工");
Worker normalWorkE = new NormalWorker("Claker", "装配工");
Worker WaperWorkA = new WaperWorker("Smith", "包装员");
Worker WaperWorkB = new WaperWorker("Frank", "包装员");
Worker CheckWorkA = new CheckWorker("Jeff", "质检员");
Worker DeliverWorkA = new DeliverWorker("Ben", "送货员");
normalWorkA.NextWorker = normalWorkB;
normalWorkB.NextWorker = normalWorkC;
normalWorkC.NextWorker = normalWorkD;
normalWorkD.NextWorker = normalWorkE;
normalWorkE.NextWorker = WaperWorkA;
WaperWorkA.NextWorker = WaperWorkB;
WaperWorkB.NextWorker = CheckWorkA;
CheckWorkA.NextWorker = DeliverWorkA;
normalWorkA.HandleWork("生产芭比娃娃");
Console.ReadKey();
}
}
}
代码调用者