有人问我:为什么scala提供了object
个关键字?
我用object
回答,我们可以:
但是他说“这些是对象可以做的,但不是为什么”。
我应该回答这个问题?
(我刚刚阅读了一些关于object
的文章,我能否回答:因为scala希望在语言级别支持module
?)
答案 0 :(得分:1)
object
可以避免static
个成员。 Scala被设计为纯面向对象语言,static
不是面向对象的。 static
也会让代码更难理解,因为您混合的代码在概念上并不属于一个整体。通常,分离静态成员和实例成员是个好主意。
同样object
通过为您实现单例模式来减少样板,并使无用类型更少。
比较一下:
class SomeGlobalService {
private SomeGlobalService instance = null
private SomeGlobalService() {
<constructor code>
}
public static SomeGlobalService getInstance() {
if (instance == null)
instance = new SomeGlobalService
return instance
}
<members>
}
SomeGlobalService.getInstance().<someMember>
要
object SomeGlobalService {
<constructor code>
<members>
}
SomeGlobalService.<someMember>
在第一个示例中,程序包被无用的类SomeGlobalService
污染,您最不会直接使用它。在scala中,类型不太明显,因为它是SomeGlobalService.type
。