АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Відносини учасників паттерна. Колеги посилають запити посереднику й одержують запити від нього

Читайте также:
  1. II. Соціальні відносини як форма прояву соціальних взаємодій.
  2. Аграрне виробництво в національній економіці. Форми господарювання і земельні відносини
  3. Взаємовідносини органів державної влади й місцевого самоврядування з органами Служби безпеки України
  4. Взаємовідносини органів публічної влади із судовими органами
  5. Види документації основних учасників ремонтно-будівельного господарства
  6. Відносини
  7. Відносини між класами
  8. Відносини місцевих державних адміністрацій у системі вертикальних та горизонтальних зв’язків
  9. Відносини учасників паттерна.
  10. Відносини учасників паттерна.
  11. Відносини учасників паттерна.

Колеги посилають запити посереднику й одержують запити від нього. Посередник реалізує кооперативну поведінку шляхом переадресації кожного запиту підходящому колезі (або декільком колегам).

Особливості програмної реалізації. Послідовність програмних дій для реалізації паттерна може бути наступна [31]:

- визначте сукупність взаємодіючих об’єктів, зв’язаність між якими потрібно зменшити;

- інкапсулюйте всі взаємодії в абстракцію нового класу;

- створіть екземпляр цього нового класу. Об’єкти-колеги для взаємодії один з одним використовують тільки цей об’єкт;

- знайдіть правильний баланс між принципом слабкої зв’язаності і принципом розподілу відповідальності;

- будьте уважні і не створюйте «об’єкт-контролер» замість об’єкта-посередника.

Майте на увазі, що при реалізації паттерну Посередник може відбуватися:

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

- обмін інформацією між колегами і посередником. Колеги повинні обмінюватися інформацією зі своїм посередником тільки тоді, коли виникає подія, що представляє інтерес. Одним з підходів до реалізації Посередника є застосування паттерну Спостерігач. Тоді класи колег діють як суб’єкти, посилаючи повідомлення посереднику про будь-яку зміну свого стану. Посередник реагує на них, повідомляючи про це іншим колегам.

Інший підхід: у класі Mediator визначається спеціалізований інтерфейс повідомлення, який дозволяє колегам обмінюватися інформацією більш вільно. Для Windows застосовується деяка форма делегування: спілкуючись з посередником, колега передає себе в якості аргументу, даючи посереднику можливість ідентифікувати відправника.

Mediator і Observer є конкуруючими паттернами. Якщо Observer розподіляє взаємодію за допомогою об’єктів «спостерігач» і «суб’єкт», то Mediator використовує об’єкт-посередник для інкапсуляції взаємодії між іншими об’єктами. Було виявлено, що легше зробити повторно використовуваними Спостерігачів та Суб’єктів, ніж Посередників.

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

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


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)