亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Kotlin 單例實踐

標簽:
Kotlin

方式一: 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() }
    }
}
  • 显式声明构造方法为private

  • companion object用来在class内部声明一个对象

  • LazySingleton的实例instance 通过lazy来实现懒汉式加载

  • lazy默认情况下是线程安全的,这就可以避免多个线程同时访问生成多个实例的问题

选择方式

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



作者:kermitye
链接:https://www.jianshu.com/p/eb361ed05f54


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消