Является ли шаблон Observer и pub-sub одинаковыми, когда в реализации используется база данных?

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

В практических сценариях я должен хранить значения в базе данных или файле по соображениям сохранения и сообщать им, как только происходит событие, получая из базы данных и проходя по списку.

Это правильное понимание? Я не вижу ни одного примера, связанного с базой данных, но в каждом примере используется список.

И снова шаблон издатель/подписчик также аналогичен, за исключением того, что нет точных сведений о том, кто является издателем и подписчиком, и для установления связи между ними используются промежуточные технологии, такие как MQ или какие-то другие.

Мой вопрос: когда мы используем БД в шаблоне наблюдателя, она не станет издателем/подписчиком (за исключением того, что здесь есть сведения о наблюдателях и издателях). Это правильное понимание?


person user8403440    schedule 12.12.2017    source источник


Ответы (1)


В большинстве примеров шаблона Observer вы увидите использование списков, но способ инициализации этого списка зависит от вашего приложения. Например, приложение с огромным количеством подписчиков должно будет хранить этих подписчиков по причинам сохранения, как и в вашем случае. Мы не можем ожидать, что такое большое количество подписчиков будет постоянно находиться в памяти. Таким образом, список наблюдателей инициализируется только из БД, хотя и не всех записей за один раз. Это вообще отдельная дискуссия.

Во-вторых, просто используя БД, шаблон наблюдателя и шаблон pub-sub не становятся похожими. Даже используя БД, вы просто инициализируете свой список наблюдателей, которые должны быть уведомлены. Между ними нет посредника, который сохранил бы идентичность субъекта и скрыл бы наблюдателя от класса Subject. Вот хорошая статья, которая хорошо это объясняет: https://hackernoon.com/observer-vs-pub-sub-pattern-50d3b27f838c

person Ravi Chaudhary    schedule 12.12.2017