麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Kotlin中單例模式和Java的對比淺析

2024-07-21 23:03:48
字體:
來源:轉載
供稿:網友

前言

單例模式,一直以來是我們在日常開發中最常用的一種設計模式,更是面試中非常重要,也非常容易被問到的問題。在日常開發中,大家常用的語言還是Java,但今天我給大家帶來的是在Kotlin語言中,單例模式是怎么編寫的,并且會對比Java方式,下面話不多說了,來一起看看詳細的介紹吧

一、懶人寫法(惡漢式)

java中

 public class Singleton{  public static final Singleton instance = new Singleton();  public Singleton getInstance() {    return instance;  } }

kotlin中

最簡單的寫法,直接用object聲明

object Singleton{}

二、基本懶加載(未實現線程同步)

注:這種方式實現了懶加載,但是不是線程安全的,可能在多個線程中創建多個不同的實例

java中

public class Singleton {  public static Singleton instance = null;  private Singleton (){}  public Singleton getInstance() {   if (instance == null) {    instance = new Singleton();   }   return instance;  }}

kotlin中

class Singleton private constructor{ companion object {   val intance by lazy(LazyThreadSafetyMode.NONE) { Singleton() } }}

三、線程同步單例1

注:其實kotlin這種寫法可以說是java直譯過來的,雖說是線程安全的,但是太影響效率,主要看下面這種

java中

public class Singleton {  private static Singleton instance = null;  private Singleton (){}  public static synchronized Singleton getInstance() {   if (instance == null) {    instance = new Singleton();    }   return instance;  } }

kotlin中

class Singleton private constructor(){  companion object {   lateinit var instance: Singleton   @Synchronized   fun get(): Singleton {     if (instance == null) {       instance = Singleton();      }    return instance!!   }  }}

四、線程同步單例2

注:線程同步,懶加載,無同步引起的效率問題

java中雙檢鎖單例

public class Singleton {  private static Singleton instance = null;  private Singleton (){}  public static Singleton getInstance() {   if (instance == null) {   synchronized (Singleton.class) {     if (instance == null) {      instance = new Singleton();     }    }  }  return instance; }}

kotlin

class Singleton private constructor(){  companion object {   val intance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { Singleton() } }}

五、靜態內部類單例

java中

public class Singleton { private Singleton (){} private static class Holder { private static Singleton instance = new Singleton(); } public static Singleton getInstance(){  return Holder.instance; }}

kotlin中

class Singleton private constructor(){  companion object {   fun getInstance(): Singleton {    return Holder.instance   }  }  private object Holder {   val instance = Singleton()  } }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到kotlin教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产九九热 | 激情影院在线观看 | 制服丝袜成人动漫 | 欧美亚洲综合在线 | 欧美三级欧美成人高清www | 麻豆国产一区 | 一级毛片在线免费观看 | 黄色免费小视频网站 | 免费一级片观看 | 久久密 | 鲁丝片一区二区三区免费入口 | 日韩视频精品一区 | 黄色av网站在线观看 | 在线亚洲观看 | 毛片毛片 | 男女羞羞视频在线免费观看 | 精品久久久久久亚洲精品 | 最污网站 | 91精品国产综合久久久欧美 | 黄色网战入口 | 91成人亚洲 | 成人nv在线观看 | 成码无人av片在线观看网站 | 草草视频在线播放 | 成人偷拍片视频在线观看 | www亚洲| 欧美成人se01短视频在线看 | videos韩国| 久久精品一区二区三区不卡牛牛 | 免费黄色a| 中文字幕综合 | 欧美一级一区二区三区 | 国产午夜精品一区二区三区免费 | 国产91一区二区三区 | 亚洲欧美在线视频免费 | 国产日产精品久久久久快鸭 | 国产69精品久久久久孕妇黑 | 天堂在线资源av | 欧美中文字幕一区二区三区亚洲 | 激情宗合 | 免费毛片在线视频 |