Наблюдатель (модель)

Наблюдатель (модель)

Наблюдатель, Observer — поведенческий шаблон проектирования. Также известен как «подчинённые» (Dependents), «издатель-подписчик» (Publisher-Subscriber).

Содержание

Назначение

Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии.

Реализация

Файл:Observer.png

При реализации шаблона «наблюдатель» обычно используются следующие классы.

  • Observable — интерфейс, определяющий методы для добавления, удаления и оповещения наблюдателей.
  • Observer — интерфейс, с помощью которого наблюдаемый объект оповещает наблюдателей.
  • ConcreteObservable — конкретный класс, который реализует интерфейс Observable.
  • ConcreteObserver — конкретный класс, который реализует интерфейс Observer.

Область применения

Шаблон «наблюдатель» применяется в тех случаях, когда система обладает следующими свойствами:

  • существует, как минимум, один объект, рассылающий сообщения
  • имеется не менее одного получателя сообщений, причём их количество и состав могут изменяться во время работы приложения.

Данный шаблон часто применяют в ситуациях, в которых отправителя сообщений не интересует, что делают с предоставленной им информацией получатели.

Примеры

PHP5

interface Observer{
	function notify($obj);
}
 
class ExchangeRate{
	static private $instance = NULL;
	private $observers = array();
	private $exchange_rate;
 
	private function ExchangeRate(){
	}
 
	static public function getInstance(){
		if(self::$instance == NULL){
		self::$instance = new ExchangeRate();
		}
	return self::$instance;
	}
 
	public function getExchangeRate(){
	return $this->$exchange_rate;
	}
 
	public function setExchangeRate($new_rate){
	$this->exchange_rate = $new_rate;
	$this->notifyObservers();
	}
 
	public function registerObserver($obj){
	$this->observers[] = $obj;
	}
 
	function notifyObservers(){
		foreach($this->observers as $obj){
		$obj->notify($this);
		}
	}
}
 
class ProductItem implements Observer{
 
	public function __construct(){
	ExchangeRate::getInstance()->registerObserver($this);
	}
 
	public function notify($obj){
		if($obj instanceof ExchangeRate) {
		// Update exchange rate data
		print "Received update!\n";
		}
	}
}
 
$product1 = new ProductItem();
$product2 = new ProductItem();
ExchangeRate::getInstance()->setExchangeRate(4.5);


Поведенческие шаблоны проектирования
[править]

Interpreter/Интерпретатор | Template Method/Шаблонный метод | Chain of Responsibility/Цепочка обязанностей | Iterator/Итератор, Cursor | Mediator/Посредник | Memento/Хранитель, Token | Observer/Наблюдатель, Listener | State/Состояние | Strategy/Стратегия | Visitor/Посетитель | Event listener | Single-serving visitor | Hierarchical visitor |


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Наблюдатель (модель)" в других словарях:

  • Наблюдатель — Дипломатический наблюдатель в дипломатии Наблюдатель (динамические системы) в математике Наблюдатель  сеть магазинов видеонаблюдения Наблюдатель (модель)  шаблон проектирования Наблюдатель  понятие в Специальной теории… …   Википедия

  • Наблюдатель (значения) — Дипломатический наблюдатель в дипломатии Наблюдатель (динамические системы) в математике Наблюдатель (модель)  шаблон проектирования Наблюдатель  понятие в Специальной теории относительности «Наблюдатель» / «Спектейтор» (англ. «The… …   Википедия

  • наблюдатель — разговора в Microsoft Network. [http://www.morepc.ru/dict/] наблюдатель Понятие общей теории систем и кибернетики; человек или организация, которые согласно целям исследования производят выделение системы, определяют, какие из ее характеристик… …   Справочник технического переводчика

  • Модель мира — Научная картина мира (НКМ) (одно из основополагающих понятий в естествознании) особая форма систематизации знаний, качественное обобщение и мировоззренческий синтез различных научных теорий. Будучи целостной системой представлений об общих… …   Википедия

  • Модель мироздания — Научная картина мира (НКМ) (одно из основополагающих понятий в естествознании) особая форма систематизации знаний, качественное обобщение и мировоззренческий синтез различных научных теорий. Будучи целостной системой представлений об общих… …   Википедия

  • Модель акторов — В компьютерных науках модель акторов представляет собой математическую модель параллельных вычислений, которая трактует понятие «актор» как универсальный примитив параллельного численного расчёта: в ответ на сообщения, которые он получает, актор… …   Википедия

  • Научная модель мира — Научная картина мира (НКМ) (одно из основополагающих понятий в естествознании) особая форма систематизации знаний, качественное обобщение и мировоззренческий синтез различных научных теорий. Будучи целостной системой представлений об общих… …   Википедия

  • Научная модель мироздания — Научная картина мира (НКМ) (одно из основополагающих понятий в естествознании) особая форма систематизации знаний, качественное обобщение и мировоззренческий синтез различных научных теорий. Будучи целостной системой представлений об общих… …   Википедия

  • World of Bartini — Модель пространства и времени Р. Л. Бартини, иллюстрация к работе «Множественность геометрий и множественность физик» в книге «Моделирование динамических систем» (совместно с П. Г. Кузнецовым) Мир Бартини абстракция, согласно которой время, как и …   Википедия

  • НЕЙРОЛИНГВИСТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ —         Модель человеческих коммуникаций и поведения, которая может быть эффективно использована для организации или описания взаимодействий в психотерапии, педагогике, менеджменте с целью их оптимизации; современное направление постэриксоновской …   Психотерапевтическая энциклопедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»