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

歡迎訪問 生活随笔!

生活随笔

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

java

Java中设计模式之单例设计模式-1

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

單例作用

  • 1 節省內存
  • 2 可以避免多種狀態導致狀態沖突

單例的創建步驟

  • 1 私有化構造方法
  • 2 私有化聲明的屬性
  • 3 getInstance
  • 4 方法需要靜態

單例分類

1.懶漢式
2.餓漢式

兩種單例區別:

餓漢式 線程安全的
懶漢式 線程不安全的

餓漢式:

package 設計模式之單例; //餓漢式: public class HungeryMode {private final static HungeryMode INSTANCE=new HungeryMode();public static HungeryMode getInstance() {return INSTANCE;}private HungeryMode(){}}

懶漢式:

package 設計模式之單例;public class LazyMode {private static LazyMode instance=null;public static LazyMode getInstance() {if(instance==null){instance=new LazyMode();}return instance;}private LazyMode(){} }

測試:

package 設計模式之單例;public class Test1 {public static void main(String[] args){//餓漢式 HungeryMode instance=HungeryMode.getInstance();HungeryMode instance2=HungeryMode.getInstance();System.out.println("instance="+instance);System.out.println("instance2="+instance2);// 懶漢式LazyMode instance3=LazyMode.getInstance();LazyMode instance4=LazyMode.getInstance();LazyMode instance5=LazyMode.getInstance();System.out.println("instance3="+instance3+","+instance3.hashCode());System.out.println("instance4="+instance4+","+instance4.hashCode());System.out.println("instance5="+instance5+","+instance5.hashCode());} }

測試結果:

創建多個對象,測試內存地址,如果相同說明創建的是同一個對象,說明創建的是單例!

延伸—————————–懶漢式線程安全性處理————————–

懶漢式線程不安全原因:

在多線程中,創建單例時,可能出現多個線程進入if(instance==null)執行語句中,在一個線程創建了一個instance后,其他進入執行語句的線程也會接著創建,這樣就會產生多個對象,實現不了單例了,此時不安全了。

代碼:

package 設計模式之單例;public class LazyMode2 {private static LazyMode2 instance=null;private LazyMode2(){}public static LazyMode2 getInstance(){// 雙重檢查if(instance==null){// 為了提高效率 盡可能少的讓線程反復判斷鎖synchronized (LazyMode2.class) {// 靜態方法中 不能使用this 就可以用 本類.class 來代替if(instance==null){instance=new LazyMode2();}}}return instance;} }

總結

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

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