KotlinKotlin使用技巧Kotlin精选

Kotlin 单例实践

2018-08-29  本文已影响40人  kermitye

方式一: object实现单例(饿汉式)

object SimpleSington {
  fun test() {}
}

//在Kotlin里调用
SimpleSington.test()

//在Java中调用
SimpleSington.INSTANCE.test();

真正的实现类似于这样:

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() }
    }
}

选择方式

对于实例初始化花费时间较少,并且内存占用较低的话,应该使用object形式的饿汉式加载。否则使用懒汉式。

参考:Kotlin中的单例模式

上一篇下一篇

猜你喜欢

热点阅读