中介者模式

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

运行结果:

转载于:https://www.cnblogs.com/lystory/p/5680040.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值