异步观察者模式

5

我希望了解一些不使用消息队列的异步观察者模式的其他实现方式。欢迎提供想法和示例(把这视为头脑风暴)。 :-)

PS 语言偏好由您决定。

3个回答

1

很明显,最简单的方法是为每个注册到Subject的Observer启动一个新线程,并让这些线程运行每个Observer的“update()”方法。

更复杂的方法是使用中间件类作为总线,让Subject向其发送事件。该中间件类将使用多个线程调用所有“注册”的Observers,但这开始偏离经典观察者模式。无论如何,使用这种方法可以防止Subject处理线程。

这种方法非常灵活,可扩展到不同的“事件类型”,有许多Subjects和许多Observers注册到中间件类以进行任意类型的事件。


1
在Java中,您可以将通知任务提交给一个Executor,它管理一组线程中的单个线程,这些线程都负责处理可观察事件。您仍然有效地拥有一个队列,但不是传统意义上的“消息队列”,而是通知任务队列。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接