Singleton的實現方式

2021-07-02 16:29:33 字數 917 閱讀 4689

**於《設計模式之禪》 秦小波著

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 ...