예제 #1
0
        static void Main(string[] args)
        {
            Mediator  m1  = new ConcreteMediatorA("班委会");
            Colleague ca1 = new ConcreteColleagueA("张三");
            Colleague ca2 = new ConcreteColleagueA("李四");
            Colleague ca3 = new ConcreteColleagueA("赵五");
            Colleague cb1 = new ConcreteColleagueB("王六");
            Colleague cb2 = new ConcreteColleagueB("李斯");
            Colleague cb3 = new ConcreteColleagueB("王翦");

            m1.Register(ca1);
            m1.Register(ca2);
            m1.Register(ca3);
            m1.Register(cb1);
            m1.Register(cb2);
            m1.Register(cb3);
            //c1.SetMediator(m1);
            //c2.SetMediator(m1);

            ca1.SendMsgInterface("大家好,我是张三,幸会。。。");
            Console.WriteLine("------------");
            cb3.SendMsgInterface("你好,我叫王翦,是个军事战略家,谁不服就打谁。。。");

            Console.ReadLine();
        }
예제 #2
0
 public Mediator(ConcreteColleagueA colleagueA, ConcreteColleagueB colleagueB)
 {
     this._colleagueA = colleagueA;
     this._colleagueA.AddObserver(this.OnConcreteColleagueAChanged);
     this._colleagueB = colleagueB;
     this._colleagueB.AddObserver(this.OnConcreteColleagueBChanged);
 }
예제 #3
0
        static void MediatorPattern()
        {
            Console.WriteLine("\n\nMediator Pattern");
            var colleagueA = new ConcreteColleagueA();
            var colleagueB = new ConcreteColleagueB();
            var mediator   = new Mediator(colleagueA, colleagueB);

            colleagueA.SetContent("Fizz");
        }
예제 #4
0
        public void Show()
        {
            var cm = new ConcreteMediator();
            var c1 = new ConcreteColleagueA(cm);
            var c2 = new ConcreteColleagueB(cm);

            cm.concreteColleagueA = c1;
            cm.concreteColleagueB = c2;

            c1.Send("`send` of ConcreteColleagueA is being called!");
            c2.Send("`send` of ConcreteColleagueB is being called!");
        }
예제 #5
0
        public void MediatorPatternCodeTest()
        {
            ConcreteMediator mediator = new ConcreteMediator();

            ConcreteColleagueA colleagueA = new ConcreteColleagueA(1, mediator);

            ConcreteColleagueB colleagueB = new ConcreteColleagueB(2, mediator);

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

            colleagueA.Send("你好", colleagueB);
            colleagueB.Send("hi", colleagueA);
        }
예제 #6
0
        static void Main(string[] args)
        {
            ConcreteMediator   m  = new ConcreteMediator();
            ConcreteColleagueA c1 = new ConcreteColleagueA(m);
            ConcreteColleagueB c2 = new ConcreteColleagueB(m);

            m.ColleagueA = c1;
            m.ColleagueB = c2;

            c1.SendMessage("吃饭了吗?");
            c2.SendMessage("刚刚吃了,你呢?");


            Console.Read();
        }
예제 #7
0
 public void OnConcreteColleagueAChanged(ConcreteColleagueA instance)
 {
     Console.WriteLine("Notification receveid from ConcreteColleagueB, value " + instance.GetContent());
     Console.WriteLine("Changing ConcreteColleagueB as side effect");
     this._colleagueB.SetContent(instance.GetContent() + "Buzz");
 }