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