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

5

我正在学习Fowler的《分析模式》(Analysis Patterns),并且用Clojure编写编程示例,以便更好地理解两者。

暂时放置持久性/耐久性问题1,似乎Clojure的refs和它们的同步是显而易见的最佳方法。

另一方面,考虑到由账户条目触发的发布规则,会在更多的账户中产生更多的交易,也许代理和它们的异步更新会更好。此时,看起来我可能需要尝试两种方法。

1 我假设如果我能很好地实现功能和概念,我将能够将所有内容映射到合理的数据库架构中。

1个回答

5
所有可变对象在Clojure中都被设计为让您获得关于时间变化的一致性视图。如果您有多个对象相互关联地发生变化,则需要创建一个包括所有对象的时间线,而refs就是为此目的而设计的。
您可能还对观察者的概念感兴趣,您可以将观察者(add-watch reference key fn)添加到refs中,以强制执行事务不变式。

+1 谢谢,我之前不熟悉watchers。它们可能是我一直在寻找的缺失部分。 - CBFraser

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