Синтезируя из нескольких ответов на этот вопрос, эту статью о хакерстве и мой собственный опыт, ключевое различие между шаблоном наблюдателя и управляемой событиями (скажем, Pub-Sub) архитектурой, на мой взгляд Достоевский:
В паттерне Observer Observ ed поддерживает ссылки на свою Observ ers .
Принимая во внимание, что в Pub-Sub вещатель не знает, кто его слушатели. (Или даже если кто-то там для прослушивания.) Слушатель может ожидать некоторые данные от вещателя, но не знает точно, откуда происходит событие. Может быть, это происходит из нескольких классов или удаленных систем. Возможно, нет. Это не имеет значения ни для вещателя, ни для слушателя.
Так вот, это не значит, что эти вещи очень разные. Кроме того, есть реализации, которые ведут себя как один или оба.
Например, wisper rubygem позволяет вам действовать как шаблон Observer или шаблон Pub-Sub в зависимости от ваших потребностей. Вы даже можете использовать оба вместе, если хотите.