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

歡迎訪問 生活随笔!

生活随笔

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

java

Java设计模式(学习整理)---单例模式

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

1、概念:

java中單例模式是一種常見的設計模式,單例模式分三種:懶漢式單例、餓漢式單例、登記式單例三種。
  單例模式有一下特點:
  1、單例類只能有一個實例。
  2、單例類必須自己自己創建自己的唯一實例。
  3、單例類必須給所有其他對象提供這一實例。

  單例模式確保某個類只有一個實例,而且自行實例化并向整個系統提供這個實例。在計算機系統中,線程池、緩存、日志對象、對話框、打印機、顯卡的驅動程序對象常被設計成單例。這些應用都或多或少具有資源管理器的功能。每臺計算機可以有若干個打印機,但只能有一個Printer Spooler,以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干通信端口,系統應當集中管理這些通信端口,以避免一個通信端口同時被兩個請求同時調用。總之,選擇單例模式就是為了避免不一致狀態,避免政出多頭。

2、舉例說明:

2.1懶漢式單例

1 /** 2 * 單例模式測試: 3 * ---懶漢模式 4 * @author 小風微靈 5 * 6 */ 7 public class SingleMode { 8 9 /* 10 * 第一步:創建一個本身的私有對象:不初始化 11 */ 12 private static SingleMode single=null; 13 14 /** 15 * 第二步:私有化構造器:使得該類不能被new出對象 16 */ 17 private SingleMode(){} 18 19 /** 20 * 第三步:一個靜態的獲取私有對象方法 21 */ 22 public static SingleMode getInstance(){ 23 24 if(single==null){ 25 single=new SingleMode(); 26 } 27 return single; 28 } 29 }

2.2餓漢式單例

1 /** 2 * 單例模式測試: 3 * ---餓漢模式 4 * @author 小風微靈 5 * 6 */ 7 public class SingleMode_EH { 8 /* 9 * 第一步:創建一個本身的私有對象:初始化 10 */ 11 private static SingleMode_EH single_=new SingleMode_EH(); 12 13 /** 14 * 第二步:私有化構造器:使得該類不能被new出對象 15 */ 16 private SingleMode_EH(){} 17 18 /** 19 * 第三步:一個靜態的獲取私有對象方法 20 */ 21 public static SingleMode_EH getInstance(){ 22 23 return single_; 24 } 25 }

?2.3登記式單例

?

1 package mode_single; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 /** 7 * 單例模式測試: 8 * ---登記式單例模式 9 * @author 小風微靈 10 * 11 */ 12 public class SingleMode_DJS { 13 private static Map<String,SingleMode_DJS> map = new HashMap<String,SingleMode_DJS>(); 14 /** 15 * 靜態塊:事先把實例存放在表Map中 16 */ 17 static{ 18 SingleMode_DJS single = new SingleMode_DJS(); 19 map.put(single.getClass().getName(), single); 20 } 21 /** 22 * 構造器:受保護 23 */ 24 protected SingleMode_DJS(){} 25 /** 26 * 靜態工廠方法,返還此類惟一的實例 27 * @param name Map集合中的實例"鍵":的名稱 28 * @return 返回登記式單例對象 29 */ 30 public static SingleMode_DJS getInstance(String name) { 31 if(name == null) { 32 name = SingleMode_DJS.class.getName(); 33 } 34 if(map.get(name) == null) { 35 try{ 36 map.put(name, (SingleMode_DJS) Class.forName(name).newInstance()); 37 } catch (InstantiationException e) { 38 e.printStackTrace(); 39 } catch (IllegalAccessException e) { 40 e.printStackTrace(); 41 } catch (ClassNotFoundException e) { 42 e.printStackTrace(); 43 } 44 } 45 return map.get(name); 46 } 47 }

?

轉載于:https://www.cnblogs.com/newwind/p/5652544.html

總結

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

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