русс | укр

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

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


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


Приклад патерна Observer


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


 

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

Приклад паттерна Observer

Використання паттерна Observer

 

Проведіть відмінності між основною (або незалежною) і додаткової (або залежної) функціональностями.

Змоделюйте "незалежну" функціональність за допомогою абстракції "суб'єкт".

Змоделюйте "залежну" функціональність за допомогою ієрархії "спостерігач".

Клас Subject пов'язаний тільки c базовим класом Observer.

Клієнт налаштовує кількість і типи спостерігачів.

Спостерігачі реєструються у суб'єкта.

Суб'єкт сповіщає всіх зареєстрованих спостерігачів.

Суб'єкт може "проштовхнути" інформацію в спостерігачів, або спостерігачі можуть "витягнути" необхідну їм інформацію від об'єкта Subject.

Особливості паттерна Observer

Патерни Chain of Responsibility, Command, Mediator і Observer показують, як можна розділити відправників і одержувачів запитів з урахуванням своїх особливостей. Chain of Responsibility передає запит відправника по ланцюжку потенційних одержувачів. Command визначає зв'язок - "оправітель-одержувач" за допомогою підкласу. В Mediator відправник і одержувач посилаються один на одного побічно, через об'єкт-посередник. В паттерне Observer зв'язок між відправником та одержувачем виходить слабкою, при цьому число одержувачів може конфигурироваться під час виконання.

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

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

 


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


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