Я читал как можно больше о шаблонах наблюдателей, но я не могу полностью понять, что/когда он будет использоваться. Кто-нибудь может мне это объяснить?Борясь, чтобы понять шаблоны наблюдателей
ответ
Думай о нем, как издатель/абонентском модели.
Пример может служить запасами
Когда цена акций объекта (предмет) обновляются, любой «инвестор» (наблюдатель), который подписан на эту акцию уведомляется обновленной цена
Наблюдатель используется в ситуациях, когда требуется, чтобы разрозненные компоненты кода были уведомлены, когда что-то изменилось. Системы, основанные на событиях, приходят на ум. Как правило, в системах на основе событий, когда вы регистрируете обработчик, любая используемая вами фреймворк будет использовать реализацию наблюдателя для уведомления обработчиков при срабатывании события.
Одна область, которую я видел, используется в рамках Sproutcore. Структура имеет функцию, называемую «наблюдение за ключевыми знаками». В принципе, вы можете настроить наблюдателей на поле объекта, и когда это значение поля изменится, наблюдатели автоматически срабатывают. Это выгодно, потому что, например, если элемент представления имеет наблюдателя на макете родительского представления, когда ситуация меняется, представление может перерисовываться. Или, скажем, значение изменяется, и вам нужно пересчитать некоторые другие значения, вы установите наблюдателя на начальное значение, а затем от своего наблюдателя вы можете выполнить пересчет.
Observer pattern используется, когда объект должен уведомить другой объект (ы) , если она изменяется. , Таким образом, диаграмма наблюдателя имеет
1) Предмет или источник: на каком бы то ни было событие .
2) Один или несколько наблюдателей: Кому Источник необходимо уведомить, имеет место какие-либо изменения .
Вот хорошая статья по этому вопросу:
I предположим, что пример даст понять: допустим, вы получаете данные из сокета и хотите получать уведомления, когда поступают некоторые данные. Таким образом, вы регистрируете наблюдателя с классом, который получает данные. Как только данные поступят, будет вызван конкретный метод вашего наблюдателя, в котором вы можете принять соответствующие меры для обработки данных.
Шаблон наблюдателя используется, когда многие наблюдатели должны знать об изменениях состояния в каком-либо объекте. Его можно использовать, например, в графическом интерфейсе, в котором вы хотите, чтобы несколько компонентов менялись «автоматически», когда изменяется какой-либо другой компонент.
Предположим, у вас установлен флажок, и в зависимости от состояния (отмеченного или непроверенного) вы хотите, чтобы другие компоненты были видимыми или нет. Количество других компонентов может быть переменным. Поэтому вы хотите, чтобы все они регистрировались с помощью флажка. Флажок затем уведомляет каждого наблюдателя о том, что изменение произошло, когда пользователь нажимает, и они могут решить, как реагировать на это изменение. Итак, логика того, как они реагируют, находится в наблюдателях. Флажок не должен знать, что они делают.
- 1. Борясь, чтобы понять «инициализация члена»
- 2. Борясь, чтобы понять тонкость relectToAttribute
- 3. Борясь, чтобы понять Myhill-Nerode
- 4. Борясь, чтобы понять, как реализовать конструкцию шаблонов команд в Java
- 5. Борясь, чтобы понять код представления на основе класса django
- 6. Борясь, чтобы понять, как этот код выводит алгоритм Евклида
- 7. Пытаясь понять шаблоны
- 8. Как понять шаблоны Django?
- 9. Борясь, чтобы выяснить, как написать определенную функцию
- 10. Борясь, чтобы получить словарь прошел с NSNotification
- 11. Борясь, чтобы получить выход в лог PySpark
- 12. Борясь, чтобы установить pygtk с пипсом
- 13. Борясь, чтобы понять, почему объединения/включения необходимы с Rails, когда существует ассоциация в модели
- 14. не может понять вариационные шаблоны в C++
- 15. Как понять ops на Option как шаблоны?
- 16. Помогите понять шаблоны имен регулярных выражений
- 17. Как понять шаблоны Url в django url.py
- 18. Борясь с Django SyncDB
- 19. Борясь, чтобы обернуть мою голову вокруг этой базы данных.
- 20. Чтобы понять realloc
- 21. Чтобы понять строку jQuery
- 22. Чтобы понять оппонент Python
- 23. Чтобы понять xargs лучше
- 24. Борьба, чтобы понять массив
- 25. Чтобы понять заголовок PHP()
- 26. Чтобы лучше понять рекурсию
- 27. Борясь с регулярным выражением
- 28. Борясь писать вложенный запрос
- 29. Борясь со статическими типами
- 30. Борясь с запросом MySQL
Похоже на прослушиватель событий? – Prisoner
@nathan, правильный. Как правило, в системах на основе событий, когда вы регистрируете обработчик, любая используемая вами фреймворк будет использовать реализацию наблюдателя для уведомления обработчиков при срабатывании события. – hvgotcodes