C# 设计模式-中介者模式

中介者模式可以协调多个毫无关系的对象,对于中介者来说,所有对象都必须是透明的,中介者保持所有对象的引用,知道所有引用对象的所有方法。毫无关系的对象可以用中介来转发消息。

    abstract class Medaitor
    {
        public abstract void Send(string message, Colleague colleague);
    }

    class ConcreteMediator : Medaitor
    {
        private ConcreteColleague1 c1;
        private ConcreteColleague2 c2;

        public ConcreteColleague1 C1
        {
            set { c1 = value; }
        }

        public ConcreteColleague2 C2
        {
            set { c2 = value; }
        }

        public override void Send(string message, Colleague colleague)
        {
            if (colleague == c1)
            {
                c2.Notify(message);
            }
            else
            {
                c1.Notify(message);
            }
        }
    }
    abstract class Colleague
    {
        protected Medaitor medaitor;

        public Colleague(Medaitor medaitor)
        {
            this.medaitor = medaitor;
        }
    }

    class ConcreteColleague1: Colleague
    {
        public ConcreteColleague1(Medaitor medaitor): base(medaitor) {}

        public void Send(string message)
        {
            medaitor.Send(message, this);
        }

        public void Notify(string message)
        {
            Console.WriteLine($"同事1得到消息{message}");
        }
    }

    class ConcreteColleague2: Colleague
    {
        public ConcreteColleague2(Medaitor medaitor): base(medaitor) { }

        public void Send(string message)
        {
            medaitor.Send(message, this);
        }

        public void Notify(string message)
        {
            Console.WriteLine($"同事2得到消息{message}");
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值