Clojure中财务帐户模式的实现:ref还是agent?

CBF*_*ser 5 accounting design-patterns clojure

我正在自己的方式中研究Fowler的分析模式,并在Clojure中为自己编写了一些编程示例,以加深对两者的理解。

暂时将持久性/持久性问题放在一边1,似乎Clojure ref及其同步显然是最好的方法。

另一方面,给定由帐户条目触发的“发布规则”,则在更多帐户(可能是代理)中产生更多交易,并且它们的异步更新会更好。在这一点上,我似乎必须尝试两者。有人对这个特定的设计决定有什么建议吗?

1我假设如果我可以很好地使用功能和概念,那么以后我将能够将所有内容映射到一个明智的数据库模式中。

Art*_*ldt 5

Clojure中的所有可变对象都旨在为您提供有关事物随时间变化一致视图。如果您有多个彼此相对变化的对象,则需要创建一个包含所有对象的时间轴,并且引用仅是为此目的而设计的。

您可能还对(add-watch reference key fn)可以添加到引用中以强制执行事务不变式的观察者的概念感兴趣。