fun main(){
val a=OneClass
val b=OneClass
println("${a===b} ---- ${a==b}")
val c = TwoClass.getInstance()
val d=TwoClass.getInstance()
println("${c===d} ---- ${c==d}")
}
//饿汉式
object OneClass
//懒汉式
class TwoClass private constructor(){
companion object{
private var twoObject:TwoClass?=null
get() {
if(field==null) {
field = TwoClass()
}
return field
}
fun getInstance(): TwoClass {
return twoObject!!
}
}
}
//安全的懒汉式:普通的懒汉式会有线程问题
class ThreeClass private constructor(){
companion object{
private var threeObject: ThreeClass? = null
get() {
if(field==null){
field=ThreeClass()
}
return field
}
@Synchronized
fun getInstance(): ThreeClass {
return threeObject!!
}
}
}
//双重校验锁:安全的懒汉式由于锁的是整个方法,虽然安全了,但是效率并不高。具体的可以看java的的代码理解
class FourClass private constructor() {
companion object {
val fourObject: FourClass by lazy {
FourClass() }
}
}
Kotlin---单例
最新推荐文章于 2024-05-06 10:47:53 发布