Clojure中的金融账户模式实施:参考或代理?

时间:2009-11-29 18:30:04

标签: design-patterns clojure accounting

我正在通过福勒的Analysis Patterns和我自己在Clojure中的编程示例,以便更好地理解这两者。

暂时将持久性/持久性问题放在一边1,似乎Clojure引用它们的同步将是明显最好的方法。

另一方面,给定由帐户中的条目触发的过帐规则,在更多帐户中生成更多事务,也许代理和它们的异步更新会更好。在这一点上,我可能不得不尝试两者兼而有之。 有人对这个特定的设计决定有什么建议吗?

1我假设如果能够很好地使用这些功能和概念,我将能够将所有内容映射到合理的数据库模式中。

1 个答案:

答案 0 :(得分:5)

Clojure中的所有可变对象都旨在为您提供一致的视图,了解事物随时间的变化。如果您有多个对象相互更改,那么您需要创建一个包含所有对象的时间轴,并且refs仅用于此目的。

您可能还对观察者(add-watch reference key fn)的概念感兴趣,您可以添加这些概念以引用事务不变量。