国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java模式之單例模式

2019-11-17 04:38:32
字體:
來源:轉載
供稿:網友
java模式之單例模式:
          單例模式確保一個類只有一個實例,自行提供這個實例并向整個系統提供這個實例。
 特點:
       1,一個類只能有一個實例
       2,自己創建這個實例
       3,整個系統都要使用這個實例
    例: 在下面的對象圖中,有一個"單例對象",而"客戶甲"、"客戶乙" 和"客戶丙"是單例對象的三個客戶對象。可以看到,所有的客戶對象共享一個單例對象。而且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。java模式之單例模式
    Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。在很多操作中,比如建立目錄 數據庫連接都需要這樣的單線程操作。一些資源治理器經常設計成單例模式。
    外部資源:譬如每臺計算機可以有若干個打印機,但只能有一個PRinter Spooler,以避免兩個打印作業同時輸出到打印機中。每臺計算機可以有若干個通信端口,系統應當集中治理這些通信端口,以避免一個通信端口被兩個請求同時調用。內部資源,譬如,大多數的軟件都有一個(甚至多個)屬性文件存放系統配置。這樣的系統應當由一個對象來治理這些屬性文件。一個例子:Windows 回收站。
在整個視窗系統中,回收站只能有一個實例,整個系統都使用這個惟一的實例,而且回收站自行提供自己的實例。因此,回收站是單例模式的應用。兩種形式:
1,餓漢式單例類
public class Singleton {  private Singleton(){}  //在自己內部定義自己一個實例,是不是很希奇?
  //注重這是private 只供內部調用  private static Singleton instance = new Singleton();  //這里提供了一個供外部訪問本class的靜態方法,可以直接訪問  
  public static Singleton getInstance() {
    return instance;   
   }
} 2,懶漢式單例類public class Singleton {   private static Singleton instance = null;  public static synchronized Singleton getInstance() {  //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     
  //使用時生成實例,提高了效率!
  if (instance==null)
    instance=new Singleton();
  return instance;   } }
第二中形式是lazy initialization,也就是說第一次調用時初始Singleton,以后就不用再生成了。
注重到lazy initialization形式中的synchronized,這個synchronized很重要,假如沒有synchronized,那么使用getInstance()是有可能得到多個Singleton實例。
一般來說第一種比較安全。進入討論組討論。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永修县| 德格县| 华容县| 乐亭县| 峨眉山市| 日土县| 平顶山市| 墨脱县| 定兴县| 尼玛县| 皮山县| 普兰店市| 新昌县| 张掖市| 海门市| 筠连县| 肃北| 抚顺县| 定南县| 永寿县| 隆安县| 达拉特旗| 霍城县| 阜新市| 瑞丽市| 青岛市| 福泉市| 科尔| 三台县| 丰原市| 永清县| 湾仔区| 神农架林区| 莎车县| 平凉市| 龙岩市| 长沙市| 常宁市| 安福县| 双牌县| 泰兴市|