Page 72 - 4190
P. 72

то Mediator використовує об'єкт-посередник для інкапсуляції взаємо-
            дії між іншими об'єктами.
                  3. З іншого боку, Mediator може використати Observer для дина-
            мічної реєстрації колег і їх взаємодії з посередником.

                  4. Mediator схожий Faсade у тому, що він абстрагує функціональ-
            ність існуючих класів. Mediator абстрагує/централізує взаємодію між
            об'єктами-колегами, додає нову функціональність і відомий усім об'-

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

                  Патерн Template Method
                  Патерн  Template  Method  (Шаблонний метод) –  визначає  основу
            алгоритму та дозволяє підкласам перевизначити деякі кроки алгорит-

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

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

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

                  Патерн Template Method широко застосовується в каркасах дода-
            тків (frameworks). Кожен каркас реалізує незмінні частини архітекту-
            ри в предметній області, а також визначає ті частини, які можуть або

            повинні настроюватися клієнтом. Таким чином, каркас додатків стає
            "центральним  елементом",  а  налаштування  клієнта  визначається
            "другорядним елементом". Цю інвертовану структуру коду називають
            принципом Голлівуду - "Не дзвоніть нам, ми самі вам подзвонимо".

                  UML-діаграма  класів  патерну  Template  Method  представлено  на
            рисунку 7.5.
                  Реалізація  методу  templateMethod()  викликає  методи  stepOne(),

            stepTwo()  і  stepThree().  Метод  stepTwo()  є  "заміщаючим"  методом.
            Він оголошений у базовому класі, а визначається в похідних класах.
            Каркаси  застосувань  широко  використовують  патерн  Тemplate

            Method. Увесь повторно використовуваний код визначається у базо-



                                                              72
   67   68   69   70   71   72   73   74   75   76   77