23種設計模式 單例模式(5種)

2021-09-25 00:00:26 字數 751 閱讀 5199

常見應用場景:window中任務管理器就是典型的單例 window中**站

專案中,讀取配置檔案的類,一般也只有乙個物件,沒有必要每次使用配置檔案資料,每次new乙個物件去讀取

**的計數器(保證同步) 應用程式的日誌應用,資料庫連線池一般也是採用單例,因為資料庫連線也是一種資料庫資源

public class singleton

}public static singleton createinstance()

private object readresolve() throws objectstreamexception

}

public class singleton

public static syncronized singleton createinstance()

return s;

}}

問題:由於編譯器優化原因和jvm底層內部模型原因,偶爾會出現問題,不建議使用

public classs singleton

private static class singletoninstance

public static singleton createsingleton()

}

優點:彌補反序列化和反射漏洞,jvm直接支援

public enum singleton
效率測試:多執行緒環境下 惡漢:22ms 懶漢:636ms 靜態內部類:28ms 列舉:32ms 雙重檢測:65ms

23種設計模式 單例模式

某些情況,如 執行緒池,乙個專案中匯流排程數量以及生命週期,可能需要統一控制 如果執行緒池自身可建立多個例項,那麼就無法統一控制,此時,只要能控制線程池物件的數量為乙個,那麼就可以實現統一控制的目標 注意 現實中真正使用純的單例模式並不多 如 spring bean 通過配置來決定是否使用單例 執行...

單例模式(23種設計模式)

單例模式 餓漢模式 class singletondemo public static singletondemo gets 懶漢模式 class singletondemo1 public static singletondemo1 gets return instance 單例模式,懶漢式,執行...

23種設計模式 單例模式

單例模式需要保證,構造方法一定是私有化的,並且類的全域性變數必須是靜態的,私有的 這樣才能有唯一的例項化途徑 錯誤 一 public class singleton public static singleton getinstance 上述方法,並沒有把類變數singleton設定為靜態的,這樣,...