Шаблон, необходимый для эмуляции подписки - PullRequest
0 голосов
/ 28 декабря 2010

A публикует что-то, B, C и D объекты, которые интересно знать, где E, F и G. не заботятся об этом.

Когда A говорит что-то, только B, C, D должно получить"сообщение".

Какой шаблон проектирования помогает лучше всего подражать этому?

** Как использовать Tibco, не используя Tibco?

Ответы [ 3 ]

1 голос
/ 28 декабря 2010

В случае обычного приложения J2SE, где издатели событий и подписчики событий являются объектами в одном и том же пространстве процесса, это будет шаблон Observer.

Подписчики обычно сообщают издателю, что они хотятпрослушивать события, вызывая определенный метод, такой как addListener (), и реализуя определенный интерфейс.

Итак, в вашем примере, скажем, мы создаем интерфейс NumberEventListener, у которого есть один метод onNumberEvent (int number)

Все ваши слушатели будут реализовывать NumberEventListener и вызывать addListener () для вашего объекта издателя.

Фильтрация может применяться как на стороне издателя, так и на стороне слушателя.Таким образом, для вашей реализации вы можете использовать метод addListener () addListener (слушатель NumberEventListener, int min, int max), и ваш слушатель будет вызываться только в том случае, если число находится между min и max.Однако это не типичная реализация, потому что это делает код издателя более сложным, и вы не можете быть по-настоящему гибким.

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

Будет ли слушатель получать уведомления «в одно и то же время» или последовательно, зависит от того, вызывал ли слушатель последовательно или в отдельных потоках издательсобытия.

0 голосов
/ 28 декабря 2010

Шаблон наблюдателя.

В качестве альтернативы может применяться шаблон цепочки фильтров, так как вы упоминаете, что некоторые объекты делают что-то на основе содержимого сообщения. Для меня это звучит как цепочка фильтров.

0 голосов
/ 28 декабря 2010

А как насчет публикации - подписать шаблон обмена сообщениями?

Также упоминается как канал публикации / подписки в корпоративных шаблонах интеграции: http://www.eaipatterns.com/PublishSubscribeChannel.html

В Java JMS обычно предоставляет такую ​​услугу обмена сообщениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...