中介者模式 就是要1对1、1对多的发送消息,管理这些消息。最典型的应用就是 QQ聊天这种类型的应用。
1、用户 people
2、消息处理中心 TextMediator
代码:
用户类:
public class people { public string Name; public people(string _Name) { Name = _Name; } public void Send(string Text, TextMediator textMediator) { Console.WriteLine("{0} :{1}", Name, Text); Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - "); textMediator.Push(this, Text); Console.WriteLine(" "); Console.WriteLine("- - - - - - - - - - - - - - - - - - - - - - - - "); } public void receive(string Text) { Console.Write("{0}_received,", Name); } }
public class TextMediator { List<people> peopleList = new List<people>(); public TextMediator(List<people> _peopleList) { peopleList = _peopleList; } public void Push(people people, string Text) { ///为什么可以这样使用呢?因为foreach 实际取值是 yield retrun foreach (var item in peopleList.Where(p => !p.Name.Equals(people.Name))) { item.receive(Text); } } }
people p1 = new people("刘志云"); people p2 = new people("郑悦"); people p3 = new people("王美玲"); people p4 = new people("刘向"); people p5 = new people("高文添"); people p6 = new people("程破空"); TextMediator textMediator = new TextMediator(new List<people>() { p1, p2, p3, p4, p5, p6 }); p1.Send("你好呀!", textMediator); p5.Send("好!", textMediator); p3.Send("你们两个关系这么好!", textMediator); p4.Send("原来是同桌!", textMediator); p3.Send("我是学健美的!", textMediator); Console.ReadLine();
运行结果: