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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java入门之初识设计模式---单列模式

發布時間:2025/5/22 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java入门之初识设计模式---单列模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計模式

是軟件開發人員在軟件開發過程中面臨的一般問題的解決方案

單例模式

目的:使得類的一個對象成為該類系統中的唯一實例

定義:一個類有且僅有一個實例,并且自行實例化向整個系統提供

因此,設計要點是:

  • 某個類只能有一個實例

  • 必須自行創建實例

  • 必須自行向整個系統提供這個實例

  • 實現:

  • 只提供私有的構造方法

  • 含有一個該類的靜態私有對象

  • 提供一個靜態的公有方法用于創建、獲取靜態私有對象

  • 代碼實現方案:

  • 餓漢式

  • 懶漢式

  • 餓漢式

    類加載時,靜態實例對象完成了實例化操作;空間換時間。(對象創建過程中實例化)

    餓漢式線程安全

    新建文件SingletonOne.java

    /** * 餓漢式 */ public class SingletonOne {//1.創建類中的私有構造函數private SingletonOne(){}//2.創建該類型的私有靜態實例private static SingletonOne instance = new SingletonOne();//3.創建公有靜態方法返回靜態實例對象public static SingletonOne getInstance(){return instance;} }

    新建文件Test.java

    public class Test {public static void main(String[] args) {SingletonOne one = SingletonOne.getInstance();SingletonOne two = SingletonOne.getInstance();System.out.println(one);System.out.println(two);} }

    輸出結果可以看到是同一個類的地址。

    懶漢式

    類加載時并未實例化,第一次使用時才進行實例化;時間換空間。(靜態公有方法中實例化)

    懶漢式存在線程風險

    懶漢式線程安全的解決方案:(此處大致介紹下,后邊在線程篇會詳細介紹)

    • 同步鎖

    • 雙重校驗鎖

    • 靜態內部類

    • 枚舉

    新建文件:SingletonOne.java

    public class SingletonTwo {//1.創建私有構造方法private SingletonTwo(){}//2.創建靜態的該類實例對象private static SingletonTwo instance = null;//3.創建開放的靜態方法提供實例對象public static SingletonTwo getInstance(){if(instance == null)instance = new SingletonTwo();return instance;} }

    新建文件Test.java

    public class Test {public static void main(String[] args) {SingletonTwo one = SingletonTwo.getInstance();SingletonTwo two = SingletonTwo.getInstance();System.out.println(one);System.out.println(two);} }

    輸出結果同上餓漢式代碼

    單列模式的特點以及應用場景

    優點:

    • 在內存中只有一個對象,節省內存

    • 避免頻繁的創建和銷毀對象,提高性能

    • 避免對共享資源的多重占用

    缺點:

    • 擴展比較困難

    • 如果實例化后的對象長期不利用,系統將默認認為垃圾,進行回收,造成對象狀態丟失

    使用場景:

  • 創建對象時占用資源過多,但同時又需要用到該類對象

  • 對系統內資源要求統一讀寫,如讀寫配置信息

  • 當多個實例存在可能引起程序邏輯錯誤,如號碼生成器

  • 總結

    以上是生活随笔為你收集整理的Java入门之初识设计模式---单列模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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