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);
        }
        /// <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();
        }