我的 Scala 项目中有一个配置组件。
显然我不想拥有这个组件的多个实例。我正在使用蛋糕图案,但我不确定如何调整它以满足我的要求:
// Library
// =================================================
trait ConfigComp {
trait Config {
def get(k: String): String
}
def config: Config
}
trait QueueComp {
self: ConfigComp =>
class Queue {
val key = config.get("some-key")
}
lazy val queue = new Queue
}
// Application
// =================================================
trait MyConfig extends ConfigComp {
lazy val config = new Config {
println("INITIALIZING CONFIG")
def get(k: String) = "value"
}
}
object Frontend extends QueueComp with MyConfig
object Backend extends QueueComp with MyConfig
Frontend.queue.key
Backend.queue.key
印刷:
INITIALIZING CONFIG
INITIALIZING CONFIG
如何让蛋糕模式共享匿名实例Config
?