Каково большое различие в изображении между наблюдателями и обратными вызовами? Когда и где использовать который?
Речь идет о разделении ответственности.
Наблюдатели позволяют исключить код, который на самом деле не относится к моделям. Например, модель Пользователь
может иметь обратный вызов, который отправляет электронное письмо с подтверждением регистрации после сохранения записи пользователя, но вам действительно не нужен этот код в модели, потому что он не имеет прямого отношения к цели модели. .
Наблюдатели позволяют вам иметь это четкое разделение, потому что у вас нет всего этого кода обратного вызова в ваших моделях. Наблюдатели зависят от модели (или моделей), а не наоборот.
Я думаю, что это во многом связано с тем, чтобы ваши модели были достаточно компактными. Поэтому, когда вы обнаружите, что ваша модель становится смехотворно длинной, возможно, пришло время переработать ее, чтобы использовать наблюдателя.
Из строгого архитектурного POW (как отмечено в ответе Джона) речь идет о разделении обязанностей , но если это простая вещь, я предпочитаю вставить ее в модель в любом случае.
Технически разницы практически нет.
Для меня то же самое. Но я предпочитаю обратный вызов вместо Observer.
Наблюдатель - это обратный вызов, но в отдельной модели.
Обратные вызовы находятся внутри модели. Итак, вы видите, что есть обратный вызов, и вы можете его взломать.