Обратный вызов более короток: вы передаете его в функцию, которая будет вызвана один раз. Это часть API, в которой вы обычно не можете вызывать функцию, не передавая обратный вызов. Эта концепция тесно связана с тем, что делает функция. Обычно вы можете передать только один обратный вызов ..
Пример: запуск потока и обратный вызов, который вызывается при завершении потока.
Наблюдатель живет дольше, и его можно прикрепить / отсоединить в любое время. У одной и той же вещи может быть много наблюдателей, и у них может быть разное время жизни.
Пример: отображение значений из модели в пользовательском интерфейсе и обновление модели из пользовательского ввода.