在Scala中简单实现单例模式,代码如下:
object Test_Singleton {
def main(args: Array[String]): Unit = {
// 测试是否成功
// 懒汉
val lazy01: Lazy.type = Lazy
val lazy02: Lazy.type = Lazy
println(lazy01.eq(lazy02))
// 饿汉
val hungry01: Hungry.type = Hungry
val hungry02: Hungry.type = Hungry
println(hungry01.eq(hungry02))
}
}
// 懒汉模式
class Lazy private() {
}
// 懒汉模式对应的伴生对象
object Lazy {
var lz: Lazy = null
def getLazy: Lazy = {
// 懒汉模式需要判断是否为空
if (lz == null) {
lz = new Lazy
}
lz
}
}
// 饿汉模式
class Hungry private() {
}
// 饿汉模式对应的伴生对象
object Hungry {
val hungry: Hungry = new Hungry
def getHungry: Hungry = hungry
}