餓漢式
object SimpleSington {
fun test() {}
}
//在Kotlin里調(diào)用
SimpleSington.test()
//在Java中調(diào)用
SimpleSington.INSTANCE.test();
這個(gè)版本的實(shí)現(xiàn)兢交,其實(shí)是個(gè)語法糖(Kotlin漫山遍野都是語法糖)卖氨。其真正的實(shí)現(xiàn)類似于這樣
public final class SimpleSington {
public static final SimpleSington INSTANCE;
private SimpleSington() {
INSTANCE = (SimpleSington)this;
}
static {
new SimpleSington();
}
}
懶漢式加載
class LazySingleton private constructor(){
companion object {
val instance: LazySingleton by lazy { LazySingleton() }
}
}
lazy默認(rèn)情況下是線程安全的 。