Шаблон асинхронного наблюдателя - PullRequest
5 голосов
/ 30 августа 2010

Я хотел найти другие способы создания шаблона асинхронного наблюдателя без использования очереди сообщений.Идеи и примеры в основном приветствуются.:-) (Думайте об этом как о мозговом штурме).

PS Выбор языка зависит от вас.

Ответы [ 3 ]

1 голос
/ 30 июня 2011

Очевидным и наиболее простым подходом было бы запустить новый поток в теме для каждого из наблюдателей, зарегистрированных в теме, и позволить этим потокам запускать обновление каждого из наблюдателей.() "method.

Более сложный подход - использовать класс промежуточного программного обеспечения в качестве шины , чтобы позволить субъекту" отправлять события "к этому.Этот класс промежуточного программного обеспечения будет использовать несколько потоков для вызова всех «зарегистрированных» наблюдателей, но это начинает отличаться от классического шаблона наблюдателя.В любом случае, при таком подходе вы не позволяете субъекту иметь дело с потоками.

Этот подход очень гибок для масштабирования на различные "виды событий" , при этом многие субъекты и многие наблюдатели регистрируются в классе промежуточного программного обеспечения для произвольных видов событий.

1 голос
/ 30 августа 2010

В Java вы можете отправлять задачи уведомлений в Executor, который управляет одним потоком группы потоков, которые отвечают только за обработку наблюдаемых событий. У вас все еще есть очередь, но вместо «очереди сообщений» в традиционном смысле это очередь задач уведомлений.

0 голосов
/ 08 сентября 2010

В .NET вы можете использовать Reactive Framework.

...