中介者抽象
中介者实现A
public class ProgramerGroupMediator : abstractMediator
{
private ArrayList _Employee;
public ProgramerGroupMediator()
{
_Employee = new ArrayList();
}
public void AddEmployee(Programer programer)
{
_Employee.Add(programer);
}
public override void NotifySomeone(string message, Programer programer)
{
string _ProgramerType = programer.GetType().Name.ToLower();
Programer tmpProgramer;
switch (_ProgramerType)
{
case "coder":
tmpProgramer = findEmployee("teamleader");
if (tmpProgramer != null)
tmpProgramer.ReceiveMessage(message);
break;
case "teamleader":
tmpProgramer = findEmployee("projectmanager");
if (tmpProgramer != null)
tmpProgramer.ReceiveMessage(message);
break;
case "projectmanager":
tmpProgramer = findEmployee("coder");
if (tmpProgramer != null)
tmpProgramer.ReceiveMessage(message);
tmpProgramer = findEmployee("teamleader");
if (tmpProgramer != null)
tmpProgramer.ReceiveMessage(message);
break;
}
}
Programer findEmployee(string type)
{
string tmpType;
Programer tmpProgramer=null;
foreach (Programer p in _Employee)
{
tmpType = p.GetType().Name.ToLower();
if (tmpType == type)
{
tmpProgramer = p;
break;
}
}
return tmpProgramer;
}
}
参与者抽象
public string FirstName
{
get
{
return _FirstName;
}
}
public string LastName
{
get
{
return _LastName;
}
}
public override string ToString()
{
return _FirstName + _LastName;
}
public void SendMessage(string message)
{
_Mediator.NotifySomeone(message, this);
}
public abstract void ReceiveMessage(string message);
}
参与者A
public override void ReceiveMessage(string message)
{
Console.WriteLine("项目程序员 {0} 收到了消息:{1}", FirstName + LastName, message);
}
};
参与者B
public override void ReceiveMessage(string message)
{
Console.WriteLine("项目组长 {0} 收到了消息:{1}", FirstName + LastName, message);
}
};
参与者C
public override void ReceiveMessage(string message)
{
Console.WriteLine("项目经理 {0} 收到了消息:{1}", FirstName + LastName, message);
}
};
调用者
namespace MediatorPattern
{
class Program
{
static void Main(string[] args)
{
ProgramerGroupMediator pgm = new ProgramerGroupMediator();
Programer Jim = new Coder("Jim", "Green", pgm);
Programer Lucy = new Coder("Lucy", "Li", pgm);
Programer WangMing = new TeamLeader("Wang", "Ming", pgm);
Programer Bill = new ProjectManager("Bill", "Gate", pgm);
pgm.AddEmployee(Jim);
pgm.AddEmployee(Lucy);
pgm.AddEmployee(WangMing);
pgm.AddEmployee(Bill);
Jim.SendMessage("Jim说:头,这活儿我做不来。Lucy可以搞定!");
Lucy.SendMessage("Lucy说:头,jim他想偷懒,他今天想早点下班去约会,这活我不干!");
WangMing.SendMessage("WangMing说:每个人都认真干自己的事,不然我就告诉Bill去。");
Bill.SendMessage("Bill说:刚才谁说我坏话啦???");
Console.ReadKey();
}
}
}
执行结果:
项目组长 WangMing 收到了消息:Jim说:头,这活儿我做不来。Lucy可以搞定!
项目组长 WangMing 收到了消息:Lucy说:头,jim他想偷懒,他今天想早点下班去约会,这
活我不干!
项目经理 BillGate 收到了消息:WangMing说:每个人都认真干自己的事,不然我就告诉Bil
l去。
项目程序员 JimGreen 收到了消息:Bill说:刚才谁说我坏话啦???
项目组长 WangMing 收到了消息:Bill说:刚才谁说我坏话啦???