我认为Scala中的“对象”与Java中的“单例模式”非常相似,而这种设计实践并不被认为是好的。对我来说,单例模式就像另一种定义全局变量的方式,这是不好的。虽然我写过一些像这样的Scala代码,因为它很容易且有效,但代码看起来很丑陋:
object HttpServer { // I'm the only HttpServer instance in this program.
var someGlobalState: State
def run() {
// do something
}
}
我试图避免这样做。什么时候定义Scala对象会更好?
对象
不应该有任何可变状态。(有时可能会被打破,但这些情况应该持怀疑态度。) - Madoc