static void Main(string[] args)
        {
            /*
             * More info: https://en.wikipedia.org/wiki/Mediator_pattern
             * What problems can the Mediator design pattern solve?
             * Tight coupling between a set of interacting objects should be avoided.
             * It should be possible to change the interaction between a set of objects independently.
             *
             * Defining a set of interacting objects by accessing and updating each other directly is inflexible because it tightly couples the objects to each other and makes
             * it impossible to change the interaction independently from (without having to change) the objects.
             *
             * And it stops the objects from being reusable and makes them hard to test.
             * Tightly coupled objects are hard to implement, change, test, and reuse because they refer to and know about many different objects.
             */

            IChatMediator mediator = new ChatMediator();
            IUser         user1    = new User(mediator, "Hamid");
            IUser         user2    = new User(mediator, "Lisa");
            IUser         user3    = new User(mediator, "Saurabh");
            IUser         user4    = new User(mediator, "David");
            IUser         vipUser  = new VipUser(mediator, "Hans");

            mediator.AddUser(user1);
            mediator.AddUser(user2);
            mediator.AddUser(user3);
            mediator.AddUser(user4);
            mediator.AddUser(vipUser);

            user1.Send("Hi All");
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            #region Lab_1
            IChatMediator chatMediator = new ChatMediator();
            IUser         hilal        = new BasicUser(chatMediator, "Beast");
            IUser         havva        = new GoldUser(chatMediator, "Savage");

            chatMediator.AddUser(hilal);
            chatMediator.AddUser(havva);

            hilal.SendMessage("Hello Suprise.");
            #endregion

            Console.WriteLine("\n");

            #region

            Arabulucu arabulucu = new Arabulucu();

            MainColleague merkez = new MainColleague(arabulucu, "Hilal Aslanboğa");
            Colleague_A   sube_1 = new Colleague_A(arabulucu, "Burak Yılmaz");
            merkez.Gonder("Cuma günü için bir toplantı düzenledim. Lütfen e-posta üzerinden onaylar mısınız?");
            sube_1.Gonder("Tabiki efendim kontrol ediyorum.");

            Colleague_A sube_2 = new Colleague_A(arabulucu, "Havva Kaya");
            sube_2.Gonder("Toplantıya katılamayacağım.");
            arabulucu.Engellenmis(merkez.TeslimAlma);

            sube_2.Gonder("Engellendim");
            merkez.Gonder("Toplantıda görüşürüz");

            #endregion

            Console.ReadKey();
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            var mediator = new ChatMediator();

            var user1 = new BasicUser(mediator, "user1");
            var user2 = new BasicUser(mediator, "user2");
            var user3 = new PremiumUser(mediator, "user3");

            mediator.AddUser(user2);
            mediator.AddUser(user3);

            user1.SendMessage("Hello");
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            var mediator = new ChatMediator();

            var user1 = new BasicUser(mediator, "user1");
            var user2 = new BasicUser(mediator, "user2");


            mediator.AddUser(user1);
            mediator.AddUser(user2);

            user1.SendMessage("Hello");

            Console.ReadKey();
        }