饿汉式实现单例模式
/**
* 饿汉式实现单例模式
*
* (一)
*/
object SingletonDemo0{
}
懒汉式实现单例模式
/**
*
* 懒汉式实现单例模式
*(二)
*/
class SingletonDemo private constructor(){
companion object{
private var instance:SingletonDemo ?= null
get() {
if (field==null){
field = SingletonDemo()
}
return field
}
fun get(): SingletonDemo{
return instance!!
}
}
}
线程安全懒汉式实现单例模式
/**
* (三)
*
* 线程安全懒汉式实现单例模式
*
* 添加了 @Synchronized注解
*/
class SingletonDemo1 private constructor(){
companion object{
private var instance:SingletonDemo1 ?= null
get() {
if (field==null){
field = SingletonDemo1()
}
return field
}
@Synchronized
fun get(): SingletonDemo1{
return instance!!
}
}
}
双重校验
/**
* (四)
*
* 双重校验
*/
class SingletonDemo2 private constructor(){
companion object{
val instance : SingletonDemo2 by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED){
SingletonDemo2()
}
}
}
静态内部类方式实现单例模式
/**
* (五)
*
* 静态内部类方式实现单例模式
*
*/
class SingletonDemo3 private constructor(){
companion object{
val instance = Holder.instance
}
private object Holder{
val instance = SingletonDemo3()
}
}