Где можно использовать паттерн observer?

Прошу поделиться опытом, расскажите как используете observer, где лучше не использовать и наоборот , просьба поделиться опытом, а не кидать ссылки на google, заранее спасибо.
  • Вопрос задан
  • 772 просмотра
Пригласить эксперта
Ответы на вопрос 4
Denormalization
@Denormalization
Стоит использовать там, где он необходим. (с) КО

Для создания системы событий. Чтобы в одноме месте можно было сделать $observer->sub(), а в другом $event->fireEvent(); и все заинтересованные получили бы сообщения.
Ответ написан
tonymadbrain
@tonymadbrain
doam.ru
Конкретный, практический пример - https://github.com/hanks/Supervisord_Notifier
Ответ написан
max-kuznetsov
@max-kuznetsov
Главный IT-архитектор
В одной нашей системе используется событийная модель. События возникают при:
- запуске, останове или иных изменениях состояния приложения/сервиса;
- запуске, останове и завершении каждого этапа бизнес-процессов;
- исключениях;
- приходе данных из внешних систем;
- действиях пользователей или поступлении запросов к внешнему API;
- и т.п.

На события подписываются несколько наблюдателей: логгеры (журналирование в файл/БД/system event log), агент системы мониторинга (контролирует работоспособность системы), контроль состояния бизнес-процессов и другие. Каждый наблюдатель реагирует на свой набор событий, состав которых определяется настройками. Например, в файл логируются все события, а в event log - только критические ошибки и важные события. Наблюдателей можно отключать (например, можно отключить отсылку уведомлений на почту администраторам или в систему мониторинга), настраивать (менять размещение и название файла журнала, например) и т.д.

В другой системе наблюдатель обеспечивал реакцию на приход данных по последовательному порту компьютера. Если данные появлялись, обеспечивался их приём и обработка.
Ответ написан
Комментировать
@olijen
Реальную пользу данного паттерна видел только на front-end. На бекенде если php запущен, как модуль apache, то скрипт в основном выполняется последовательно, выдает response и умирает. В таких условиях (особенно на не больших проектах) нет надобности использовать наблюдателя.
Если интересен наблюдатель, советую изучить его в контексте front-end (к примеру, посмотри реализацию на Backbone.js. Views наблюдают за models, перерисовываясь при изменениях). Кстати, паттерн наблюдатель - один из ключевых паттернов в парадигме MV*. (для общего развития)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы