当我从 C# 来到 Scala 时,我几乎没有使用过著名的 DI 框架,但我已经阅读了它们并且最近开始意识到 Scala 中的蛋糕模式。
但是,如链接中所述,蛋糕模式不允许我们控制组件初始化的顺序。
对我来说,这仅在初始化时组件需要彼此时才重要,这似乎有点设计缺陷:)
在哪些情况下需要有序初始化并且无法通过单独的组件上下文负责初始化来解决?
在他的演讲“来自黑湖的面包店”中,Daniel Spiewak 展示了一些解决这个特殊问题的方法。
幻灯片-> https://dl.dropbox.com/u/1679797/NE%20Scala/Bakery%20from%20the%20Black%20Lagoon.pdf
视频 -> http://www.youtube.com/watch?feature=player_embedded&v=yLbdw06tKPQ
摘自谈话:
您可以通过使用惰性 val或def而不是 val来解决空指针异常,但代价是可能出现死锁。