【发布时间】:2011-10-20 17:26:18
【问题描述】:
假设我想使用 OO 编程语言实现事件总线。 我可以这样做(伪代码):
class EventBus
listeners = []
public register(listener):
listeners.add(listener)
public unregister(listener):
listeners.remove(listener)
public fireEvent(event):
for (listener in listeners):
listener.on(event)
这实际上是观察者模式,但用于应用程序的事件驱动控制流。
您将如何使用函数式编程语言(例如其中一种 lisp 风格)来实现此模式?
我问这个是因为如果不使用对象,仍然需要某种状态来维护所有侦听器的集合。此外,由于 listeners 集合会随着时间而变化,因此不可能创建一个纯函数式的解决方案,对吧?
【问题讨论】:
标签: clojure functional-programming lisp scheme observer-pattern