Page 70 - 4190
P. 70

Group, а кожен об'єкт Group - з кожним об'єктом User. Проте через
            наявність безлічі взаємозв'язків модифікувати поведінку такої систе-
            ми дуже непросто, довелося б змінювати усі існуючі класи.
                  Альтернативний підхід - введення "додаткового рівня опосеред-

            кованості"  або  побудова  абстракції  з  відображення  (відповідності)
            користувачів у групи і груп у користувачів. Даний підхід має такі пе-
            реваги:  користувачі  і  групи  відокремлені  один  від  одного,  відобра-

            женнями легко управляти одночасно і абстракція відображення може
            бути розширена в майбутньому шляхом визначення похідних класів
            (рис. 7.3).





























             Рисунок 7.3 – Структурна схема відображення користувачів у групи і груп
                                                   у користувачів

                  Розбиття системи на безліч об'єктів в загальному випадку підви-
            щує  міру  повторного  використання,  проте  безліч  взаємозв'язків  між
            цими  об'єктами,  як  правило,  приводить  до  зворотного  ефекту.  Щоб

            цього не допустити, необхідно інкапсулювати взаємодії між об'єкта-
            ми  в  об'єкт-посередник.  Діючи  як  центр  зв'язку,  цей  об'єкт-
            посередник  контролює  і  координує  взаємодію  групи  об'єктів.  При
            цьому  об'єкт-посередник  робить  взаємодіючі  об'єкти  слабо  пов'яза-

            ними, оскільки їм більше не треба зберігати посилання один на одно-
            го - уся взаємодія йде через цього посередника. Розширити або зміни-
            ти цю взаємодію можна через його підкласи.

                  Патерн  Mediator  замінює  взаємодію  "усе  з  усіма"  взаємодією
            "один з усіма".
                  Приклад  раціонального  використання  патерну  Mediator  -  моде-


                                                              70
   65   66   67   68   69   70   71   72   73   74   75