Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шаблони проектування.docx
Скачиваний:
3
Добавлен:
25.11.2019
Размер:
73.72 Кб
Скачать
  • Спостерігач

В сучасних програмних системах часто виникає потреба організовувати між об’єктами відношення типу „один до багатьох” таким чином, щоб будь-яка зміна об’єкта А автоматично ставала відомою кожному з об’єктів В1, В2, ..., Вn і навпаки – щоб кожен з останніх n об’єктів мав змогу внести зміну в об’єкт А.

Особливо характерний приклад – візуальний інтерфейс електронної таблиці, який дозволяє відображати одну й ту саме сукупність даних одночасно у вигляді таблиці, гістограми, графіка, кругової діаграми тощо.

Будь-яка зміна даних в таблиці повинна призводити до одночасного оновлення всіх графічних відображень; з іншого боку, користувач може перетягувати мишкою точки на графіку чи сегменти діаграми, змінюючи тим числові значення даних, у таблиці.

Іншими словами, треба підтримувати узгодженість станів кількох взаємопов’язаних об’єктів.

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

Про небажаність жорстких перехресних зв’язків, кількість яких має тенденцію стрімко зростати, сказано в розділі, присвяченому шаблону „Посередник”.

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

  • Ідея шаблону

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

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