Scala的单例对象
在Java中如果一个类只允许创建一个对象,那么就把这个对象称为单例对象。
--Scala 的单例对象声明--
Scala中不需要像Java中那样需要三个条件,Scala内部已经独立完成了。Scala 的单例对象使用 object 关键字声明,方式如下:
object identifier{
}
object是声明单例对象的关键字,identifier表示一个合法的标识符,是对象的名字。
--Scala 的单例对象注意点--
(1)不是一个类型:通过object关键字创建的是一个对象,不是一个类型。
(2)不能使用new关键字:声明单例对象时不可以使用new关键字。
(3)不能传递参数:单例对象无法传递参数。
Scala的单例对象应用场景
Scala的单例对象应用场景主要有两种情况,分别如下:
(1)资源共享的情况:节省存储空间,优化性能。
(2)控制资源的情况:可以直接控制资源的配置情况,比如数据库的连接池。
Scala的伴生类和伴生对象
1.Scala 的伴生对象与伴生类的定义
当同名的类和单例对象在同一个源码文件中时,这个类称为单例对象的伴生类,对象称为类的伴生对象,这两者是相互的。Scala的伴生对象与伴生类主要有两个要点:
(1)必须同名。
(2)必须在同一个源码文件中。
2.Scala 的伴生对象与伴生类解决的问题
Scala是比Java更加面向对象的编程语言,面向对象说明一切皆对象,但是在Java中有静态的成员,静态成员属于类不属于对象。而Scala中没有静态成员这个概念,没有static关键字。Scala 的伴生对象和伴生类可以解决如下问题。
(1)生成静态成员:如果Scala中需要生成类似静态成员的应用场景,可以使用伴生对 象解决该问题。
(2)伴生对象和类之间的相互访问:伴生对象和类的私有成员可以相互访问。
(3)构建单例对象:这一点与静态成员问题相似。下面举例说明,创建一个Student类和它的伴生对象。
Scala对象的创建
创建对象的 下面学习Scala 对象的三种创建方式,其中第三种方式可以合并到类中,但是使用apply的方式创建对象有一个条件,必须定义一对伴生类和伴生对象,在伴生对象中还需要实现apply 方法。第三种方式可以用于解决使用非new关键字创建对象的问题。
(1) new :使用new关键字创建类的对象。
(2)伴生对象:使用object关键字创建一个单例对象。
(3) apply : apply是一个方法,需要在伴生对象中实现这个方法。下面举例说明使用三种方式创建Person对象的方法。