日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

闭关修炼(十)单例设计

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 闭关修炼(十)单例设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單例、工廠、代理這些簡單的設計模式都應該掌握(手寫)


文章目錄

  • 設計模式
    • 什么是設計模式?
    • 設計模式的作用?
    • 23種設計模式
    • 設計模式六大原則
  • 單例
    • 什么是單例
    • 懶漢式
    • 餓漢式


設計模式

什么是設計模式?

設計模式是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。

設計模式的作用?

重復利用,提高維護性,易于擴展、提高閱讀性、減少代碼

23種設計模式

分為三大類,常問的有:

  • 創建型 :工廠、單例等
  • 結構型 : 代理、適配器等
  • 行為型 : 策略模式等
  • 單例99%必問

    設計模式六大原則

  • 開閉原則 : 對于擴展是開放的,但是對于修改是封閉的。增加擴展性、易于修改
  • 里氏替換原則 : 面向對象(多態)
  • 依賴倒轉 : 面向接口編程
  • 接口隔離原則 : 接口分離,接口之間控制耦合度
  • 迪米特法則 : 最少知道原則,就是說一個對象應當對其它對象有盡可能少的了解
  • 合成復用原則 : 代碼復用
  • 單例

    什么是單例

    保證jvm中只有一個實例,分為懶漢式和餓漢式

    懶漢式 – 線程不安全,需要時候才會創建

    餓漢式 – 天生線程安全,jvm class 加載的時候就初始化

    重要知識點:懶漢式雙重檢驗鎖和餓漢式寫法

    懶漢式

    只有需要時候才會創建,
    寫法:同步代碼塊+雙重檢驗

    /*** 單例 懶漢式* 需要的時候才會創建對象** @author uuz* @date 2021/01/10*/ class SingleLazy {private static SingleLazy singleton;private SingleLazy() {}/*** 獲取單例** @return {@link SingleLazy}*/@SuppressWarnings("all")public static SingleLazy getSingleton() {// 當對象不是null的時候就不用考慮線程安全問題了,// 所以不用整個函數加synchronized 降低效率if (singleton == null) {// 靜態函數不能用this鎖,注意synchronized (SingleLazy.class) {// 雙重檢驗鎖, 兩個線程同時為判斷sigleton為null時進入// 同步代碼塊再次進行判斷if (singleton == null) {singleton = new SingleLazy();}}}return singleton;}}

    餓漢式

    天生線程安全,jvm class 加載的時候就初始化

    /*** 單一 餓漢式** @author uuz* @date 2021/01/10*/ class SingleHunger {@SuppressWarnings("all")private static SingleHunger singleton = new SingleHunger();private SingleHunger() {}/*** 獲取單例** @return {@link SingleHunger}*/public static SingleHunger getSingleton() {return singleton;}}

    總結

    以上是生活随笔為你收集整理的闭关修炼(十)单例设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。