Example #1
0
        protected override void RealTestOutPut()
        {
            var mediator = new ConcreteMediator();
            var a        = new ColleagueA(mediator);
            var b        = new ColleagueB(mediator);
            var c        = new ColleagueC(mediator);
            var list     = new List <AbstractColleague>()
            {
                a, b, c
            };

            println("Change a to 100 and notify colleagues");
            a.Data = 100;
            a.Changed();
            Print(list);

            println("Change b to 100 and notify colleagues");
            b.Data = 100;
            b.Changed();
            Print(list);

            println("Change c to 100 and notify colleagues");
            c.Data = 100;
            c.Changed();
            Print(list);
        }
Example #2
0
        static void Main(string[] args)
        {
            ConcreteMediator m = new ConcreteMediator();
            ColleagueA       a = new ColleagueA(m);
            ColleagueB       b = new ColleagueB(m);

            m.A = a;
            m.B = b;

            a.Send("在干吗?");
            b.Send("打游戏");
            Console.ReadKey();
        }
    public static void Main(string[] args)
    {
        MediatorA mediator = new MediatorA();

        ColleagueA colleagueA = new ColleagueA(mediator);
        ColleagueB colleagueB = new ColleagueB(mediator);

        mediator.AddColleague(colleagueA);
        mediator.AddColleague(colleagueB);

        colleagueA.Mediate();
        colleagueB.Mediate();
    }
        public void MediatorPattern_Test()
        {
            ColleagueA colleagueA = new ColleagueA();
            ColleagueB colleagueB = new ColleagueB();
            Mediator   mediatorA  = new MediatorA(colleagueA, colleagueB);

            colleagueA.SetMediator(mediatorA);
            colleagueB.SetMediator(mediatorA);

            var resultA = colleagueA.NotifyColleagueB();
            var resultB = colleagueB.NotifyColleagueA();

            Assert.Equal("MediatorA ColleagueB Notify", resultA);
            Assert.Equal("MediatorA ColleagueA Notify", resultB);
        }
Example #5
0
    static void MainRun()
    {
        Mediator m = new Mediator();
        // Two from head office and one from a branch office
        Colleague  head1   = new Colleague(m, "John");
        ColleagueB branch1 = new ColleagueB(m, "David");
        Colleague  head2   = new Colleague(m, "Lucy");

        head1.Send("Meeting on Tuesday, please all ack");
        branch1.Send("Ack");      // by design does not get a copy
        m.Block(branch1.Receive); // temporarily gets no messages
        head1.Send("Still awaiting some Acks");
        head2.Send("Ack");
        m.Unblock(branch1.Receive); //open again
        head1.Send("Thanks all");
    }
Example #6
0
        public void MediatorTest()
        {
            {
                var a = new ColleagueA();
                var b = new ColleagueB();

                var mediator = new ConcreteMediator(a, b);
                a.SendMessage("你好", mediator);
                b.SendMessage("我很好,谢谢", mediator);
            }
            {
                var mediator = new NotificateionEventHandler();
                var admin    = new 中介者模式.消息通知.Person(mediator, "管理员");
                var user     = new 中介者模式.消息通知.Person(mediator, "用户");
                admin.Send("口号?");
                user.Send("芝麻开门");
            }
        }
        /// <summary>
        /// 中介者
        /// </summary>
        static void Mediator()
        {
            Console.WriteLine($"中介者模式{Environment.NewLine}-------------------------------------------");

            Mediator.Mediator mediator   = new Mediator.Mediator();  //创建中介者
            ColleagueA        colleagueA = new ColleagueA(mediator); //创建同事A
            ColleagueB        colleagueB = new ColleagueB(mediator); //创建同事B
            ColleagueC        colleagueC = new ColleagueC();         //创建同事C
            ColleagueD        colleagueD = new ColleagueD(mediator); //创建同事D

            mediator.ColleagueAObj = colleagueA;                     //关联同事A
            mediator.ColleagueBObj = colleagueB;                     //关联同事B
            mediator.ColleagueCObj = colleagueC;                     //关联同事C

            colleagueA.OperationB();
            colleagueB.OperationA();
            colleagueD.Operation();
            Console.ReadKey();
        }
Example #8
0
    public void Main()
    {
        var m = new Mediator();
        // Two from head office and one from a branch office
        var head1 = new Colleague(m, "John");
        var branch1 = new ColleagueB(m, "David");
        var head2 = new Colleague(m, "Lucy");

        head1.Send("Meeting on Tuesday, please all ack");
        branch1.Send("Ack"); // by design does not get a copy
        m.Block(branch1.Receive); // temporarily gets no messages
        head1.Send("Still awaiting some Acks");
        head2.Send("Ack");
        m.Unblock(branch1.Receive); // open again
        head1.Send("Thanks all");
    }