русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Постановка проблеми, що вирішується за допомогою патерна


Дата додавання: 2014-10-07; переглядів: 827.


 

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

Патерн Observer визначає об'єкт Subject, який зберігає дані (модель), а всю функціональність "уявлень" делегує слабосвязанних окремих об'єктах Observer. При створенні спостерігачі Observer реєструються в об'єкта Subject. Коли об'єкт Subject змінюється, він сповіщає про це всіх зареєстрованих спостерігачів. Після цього кожен cпостерігач запитує у об'єкта Subject ту частину статків, яка необхідна для відображення даних.

Така схема дозволяє динамічно налаштовувати кількість і "типи" уявлень об'єктів.

Описаний вище протокол взаємодії відповідає моделі витягування (pull), коли суб'єкт інформує спостерігачів про своє зміні, і кожен спостерігач відповідальний за "витягування" у Subject потрібних йому даних. Існує також модель проштовхування, коли суб'єкт Subject посилає ("проштовхує") спостерігачам детальну інформацію про своє зміні.

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

Реалізація "компресії" сповіщень (посилка єдиного сповіщення на серію послідовних змін суб'єкта Subject).

Моніторинг декількох суб'єктів за допомогою одного спостерігача Observer.

Виключення «висячих» посилань у спостерігачів на віддалені суб'єкти. Для цього суб'єкт повинен повідомити спостерігачів про своє видаленні.

Патерн Observer вперше був застосований в архітектурі Model-View-Controller мови Smalltalk, що представляє каркас для побудови користувацьких інтерфейсів.

 


<== попередня лекція | наступна лекція ==>
Призначення патерна Observer | Структура патерна Observer


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн