1、什么是单例模式
单例模式是指:保证在整个的软件系统中,某个类只能存在一个对象实例。
2、单例模式的应用场景
比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例模式。
3、单例模式的应用案例
Scala中没有静态的概念,所以为了实现Java中单例模式的功能,可以直接采用类对象(即伴生对象)方式构建单例对象
4、懒汉式
object LazySigleTest {
def main(args: Array[String]): Unit = {
val singleTon = SingleTon.getInstance
val singleTon2 = SingleTon.getInstance
println(singleTon.hashCode() + " " + singleTon2.hashCode())
}
}
//将SingleTon的构造方法私有化,伴生类
class SingleTon private() {}
//伴生对象
object SingleTon{
private var s:SingleTon = null
def getInstance = {
if (s == null){
s = new SingleTon
}
s
}
}
5、饿汉式
object HungrySingleTest {
def main(args: Array[String]): Unit = {
val singleTon = SingleTon.getInstance
val singleTon2 = SingleTon.getInstance
println(singleTon.hashCode() + " ~ " + singleTon2.hashCode())
println(singleTon == singleTon2)
}
}
//将SingleTon的构造方法私有化
class SingleTon private (){
println("~~~")
}
object SingleTon{
private val s:SingleTon = new SingleTon
def getInstance={
s
}
}