1.1 什么是Scala中的单例对象?
单例,单例,顾名思义,它只有一个实例,没有更多了。这就是它区别于class类的地方。
Scala是一种面向对象的编程语言,常量/变量/方法等必须要定义在class或object里面才行,在其他之外的地方是不能被定义的。就是说object对象、class类是唯二可定义其成员的地方。
定义对象的关键字是object,它是一个实例,不是一个蓝图,因此它不需要外部调用即可执行其方法。
和惰性变量一样,单例对象是延迟创建的,当它第一次被使用时创建。
当然可以创建多个单例对象,也可以在类或方法中定义对象,自然也可以在一个对象或类中引用另一个对象中的方法或常量。如果要在一个脚本中引用另一个脚本中的对象的方法,则需要import进来对象的路径。
注意:一个单例对象是全局唯一的,所以具有稳定路径。即你不能创建两个同样名称的对象,不再同一个路径也不行,任何地方都不行。
1.2 为什么选择单例对象?
每个程序都需要一个从执行开始的点。 在OOPS中,类需要对象才能执行。 但是需要首先执行main()方法才能调用该类的其他成员。
为了在scala中执行main()方法,许多面向对象的编程语言都使用static关键字,但是scala编程语言中没有static关键字。
这就是为什么在Scala中我们使用定义了main方法的单例对象。
1.3 单例对象的特征 (Features of singleton object)
使用object关键字创建。
对象中的成员是全局成员,即可以从程序中的任何位置调用成员。
单例对象无法创建实例。 即它只能有唯一的实例就是它本身。
允许继承,即继承可以扩展类和特征。 (it can extend class and traits.)
如果要在一个单例对象中引用 另一个单例对象中的成员,我们将使用 引用单例对象的名称 . {引用单例对象的名称}. 引用单例对象的名称.{成员名称} 的方法引用。
参考资料:
9、Scala对象object