должен ли субъект иметь набор наблюдателей

#design-patterns #observer-pattern

Вопрос:

В шаблоне наблюдателя должен ли a Subject иметь коллекцию Observer s, даже если мне нужен только один Observer ? У каждой схемы или приложения, которое я вижу с использованием шаблона наблюдателя, есть много Observer s. Называется ли это Образцом наблюдателя, если он имеет только один Observer ?

Ответ №1:

Из книги ГоФ страница 295,

Любое количество объектов-наблюдателей может наблюдать за субъектом.

Вот почему в каждом примере вы видите набор наблюдателей. Субъект поддерживает более одного; однако не обязательно иметь более одного. «Любое число» включает число 1.

Ответ №2:

Да, все в полном порядке. Как и в MVC, объект на уровне фасада презентации / приложения может быть единственным объектом, который прослушивает определенный объект домена.

Помните спецификацию Субъекта и Наблюдателя — там нет упоминания о коллекции. У наблюдателя есть метод update (), а у субъекта-метод register (). Вот и все! Коллекция-это деталь реализации. 🙂