中介者模式 就是要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();

运行结果:

posted on 2016-07-18 09:06  梦回过去  阅读(190)  评论(0编辑  收藏  举报