В чем разница между наблюдателями и обратными вызовами? - PullRequest
7 голосов
/ 17 мая 2010

В чем разница между наблюдателями и обратными вызовами? Когда и где использовать какой?

Ответы [ 3 ]

11 голосов
/ 17 мая 2010

Речь идет о разделении интересов.

Наблюдатели позволяют выделять код, который на самом деле не принадлежит моделям. Например, модель User может иметь обратный вызов, который отправляет электронное письмо с подтверждением регистрации после сохранения записи пользователя, но вам не нужен этот код в модели, поскольку он не имеет прямого отношения к цели модели.

Наблюдатели позволяют вам иметь такое чистое разделение, потому что у вас нет всего этого кода обратного вызова в ваших моделях. Наблюдатели зависят от модели (или моделей), а не наоборот.

0 голосов
/ 17 мая 2010

Я полагаю, что очень важно, чтобы ваши модели были достаточно стройными. Поэтому, когда вы обнаружите, что ваша модель становится смехотворно длинной, возможно, пришло время провести рефакторинг для использования наблюдателя.

В строгом архитектурном военнопленном (как отмечается в ответе Джона) речь идет о разделении обязанностей , но если это простая вещь, я все равно предпочитаю ее в модели.

Технически разницы практически нет.

0 голосов
/ 17 мая 2010

Для меня это одно и то же. Но я предпочитаю обратный вызов вместо Обозревателя.

Наблюдатель - это обратный вызов, но в отдельной модели.

Обратный звонок внутри модели. Итак, вы видите, что есть обратный вызов, и вы можете взломать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...