**於《設計模式之禪》 秦小波著
1. 餓漢模式(推薦)
package com.zby.singleton;
/* * 餓漢模式,推薦
*/public class singleton1
public static singleton1 getinstance()
public static void dosomething()
}
2. 飽漢模式(不推薦)
package com.zby.singleton;
/* * 懶漢模式
*/public class singleton2
public static synchronized singleton2 getinstance()
}
一般在什麼情況下使用單例模式?
1. 單例工廠,ssh框架中比較經典的模式
2. 使用**層的時候,物件池的時候
3. 讀取配置檔案的類要用單例模式,配置檔案只要讀取一次就可以全域性使用了,並且對配置檔案進行儲存操作的時候,如果例項多了,會造成不同步
4. 其實最簡單的就應該是經常使用的資料庫連線
5. 建立乙個物件需要消耗的資源過多,如要訪問io和資料庫等資源
6. 需要定義大量的靜態常量和靜態方法(如工具類的環境),可以採用單例模式(當然,也可以直接宣告為static的方式)。
單例模式:保證乙個類中,有且只有乙個例項存在並提供乙個訪問點供全域性訪問,該例項可以被所有的程式來訪問。一般在以下情況下使用:
1. 當要用乙個類時,又要用該類中的乙個例項
2. new來建立例項時會給程式造成資源的浪費,而且例項越多也不好控制
3. 不同的執行緒呼叫時,可能會引起不同步的現象。
實現Singleton的兩種方式
法一 公有靜態成員final域 public class elvis 優勢 api很容易知道這是乙個單例類,更簡單 注意 呼叫者可以借助accessbleobject.setaccssible方法通過反射機制呼叫私有構造器,因此如果想抵禦這種攻擊,可以修改構造器,讓它在被要求建第二個例項的時候丟擲異...
實現Singleton 模式 六種實現方式
public static class singleton public static singleton getinstance public static class singleton public static singleton getinstance return instance 懶漢...
Singleton模式的實現
設計乙個類,我們只能生成該類的乙個例項。因為我們只能生成乙個例項,所以我們必須把建構函式設定為私有函式已禁止他人建立例項。可以定義乙個靜態的例項,在需要的時候建立該例項。public sealed class sinleton1 private static singleton1 instance ...