我希望了解一些不使用消息队列的异步观察者模式的其他实现方式。欢迎提供想法和示例(把这视为头脑风暴)。 :-)
PS 语言偏好由您决定。
我希望了解一些不使用消息队列的异步观察者模式的其他实现方式。欢迎提供想法和示例(把这视为头脑风暴)。 :-)
PS 语言偏好由您决定。
很明显,最简单的方法是为每个注册到Subject的Observer启动一个新线程,并让这些线程运行每个Observer的“update()”方法。
更复杂的方法是使用中间件类作为总线,让Subject向其发送事件。该中间件类将使用多个线程调用所有“注册”的Observers,但这开始偏离经典观察者模式。无论如何,使用这种方法可以防止Subject处理线程。
这种方法非常灵活,可扩展到不同的“事件类型”,有许多Subjects和许多Observers注册到中间件类以进行任意类型的事件。
Executor
,它管理一组线程中的单个线程,这些线程都负责处理可观察事件。您仍然有效地拥有一个队列,但不是传统意义上的“消息队列”,而是通知任务队列。