в целом вы должны обновить все, от наблюдаемого, когда вы получите звонок для обновления(). если это нецелесообразно, вы можете передать подсказку notifyObservers().
шайка-из-книги говорит, что один из следствий шаблона наблюдателя является:.
«Неожиданные обновления Поскольку наблюдатели не имеют знаний о присутствии друг друга, они могут быть слепыми к конечной стоимости изменения субъект. По-видимому, безобидная операция по этому вопросу может вызвать каскад обновлений для наблюдателей и их зависимых объектов. Более того, критерии зависимостей, которые не определены или поддерживаются, обычно приводят к ложным обновлениям, которые трудно отследить.
Эта проблема усугубляется тем фактом, что простой протокол обновления не содержит сведений о том, что изменилось в теме. Без дополнительного протокола t o Помогите наблюдателям узнать, что изменилось, они могут быть вынуждены много работать, чтобы вывести изменения. « также в стадии реализации, говорят:
« Избегайте протоколов обновления конкретного наблюдателя: модели push и pull. В реализациях шаблона Observer часто передается дополнительная информация об этом изменении. Субъект передает эту информацию в качестве аргумента для обновления. Объем информации может сильно различаться.
На одной из крайностей, которую мы называем модель push, предмет отправляет наблюдателям подробную информацию об изменении, хотят они этого или нет. С другой стороны - модель тяги; субъект отправляет только самое минимальное уведомление, и наблюдатели просят подробности в дальнейшем.
Модель тянет подчеркивает незнание объекта своими наблюдателями, тогда как модель push предполагает, что предметы знают что-то о потребностях своих наблюдателей. Модель push может сделать наблюдателей менее многоразовыми, потому что классы Subject делают предположения о классах Observer, которые могут быть не всегда истинными. С другой стороны, модель pull может быть неэффективной, потому что классы Observer должны выяснить, что изменилось без помощи Субъекта. "