А в чем, собственно, идея?
Источник уведомления только делает свое уведомление. Он не делает предположений о существовании потенциальных наблюдателей или чего-либо еще. Наблюдатель регистрируется для уведомлений, для обработки которых он предназначен. Наблюдатель не делает никаких предположений о том, сколько существует потенциальных источников для уведомлений, которые он может обрабатывать.
Это способ добиться инъекции зависимостей, не требуя, чтобы источники знали наблюдателей, а наблюдатели знали источники. Однако, чтобы вся система работала, необходимо подключить правильных наблюдателей для правильных уведомлений, и эта система даже уязвима к опечаткам, поскольку ее нельзя проверить во время компиляции.
Самая большая опасность, конечно, в том, что кто-то воспользуется этим, чтобы сделать тонны объектов глобально доступными для 1-1 вызовов.
Рекомендую посмотреть эти видео для лучшего погружения в вопрос: