一.scala的单例对象声明用object关键字声明:
object identifier{
}
直接访问单例对象:①.对象.属性 ②.对象.访问()
二.scala的单例对象应用场景
①.资源共享的情况下
②.控制资源的情况下
三.单例模式:让一个类只能产生一个对象
四.scala的伴生类和伴生对象
①.必须同名
②.必须在同一个源码文件中
伴生类和伴生对象应用场景:在伴生对象中访问伴生类的私有方法。
package TestO
//单例模式:让一个类只能产生一个对象!
//伴生类
class Logger private(){
def log(message:String):Unit={
println(message)
}
}
//伴生对象
object Logger{
private val instance=new Logger()
//唯一方式可以去访问这个对象
def getInstance():Logger={
instance
}
}
object TestSingle {
def main(args: Array[String]): Unit = {
//var l1=new Logger()//构造函数添加了private,所以在类的外部无法访问
//var l2=new Logger()
var l1=Logger.getInstance()
var l2=Logger.getInstance()
println(l1==l2)//true,说明这个对象是唯一的!!
l1.log("test")
}
}