首先要理解單例模式的意義,以及使用場景(這需要實戰經驗,多看**,看別人在什麼時候使用了單例模式,思考為什麼在那裡使用單例模式)。而這是最難的,一定要多總結,把所有遇到的單例模式的情景都可以總結進來
然後要知道單例模式的特點,理解什麼樣的定義是單例模式
最後要會寫單例模式
一、單例模式特點
1、單例類只能有乙個例項
2、單例類必須自己建立自己唯一的例項
3、單例類必須給所有其他物件提供該例項
二、單例模式的幾種寫法
懶漢式單例
// 懶漢式單例,在第一次呼叫時例項化自己
public
class singleton
private
static singleton single = null;
// 靜態工廠方法
public
static singleton getinstance()
return single;
}}
二、餓漢式單例
public
class singleton
private
static final singleton single = new singleton();
public
static singleton getinstance()
}
餓漢式在類初始化時就已經建立好乙個靜態例項供系統使用,以後不再改變,所以天生是執行緒安全的。
三、餓漢式和懶漢式的區別
1、餓漢式就是一旦類載入,就將單例初始化完成,保證getinstance()時,單例已經存在。
2、懶漢式就是比較懶,只有在呼叫getinstance()時,才會去初始化單例。
再從以下兩點區分這兩種建立單例的方式
(一)從執行緒安全來看:
餓漢式是天生執行緒安全的,可以放心的在多執行緒中使用。
懶漢式是非執行緒安全的,需要通過**實現執行緒安全,有以上列出的幾種寫法,這幾種寫法在資源載入和效能上有一定的區別。
(二)從資源載入和效能來看
餓漢式在類建立的同時,就已經完成單例的初始化,不管以後會不會用到該單例物件,都會占用一定的記憶體,但相應的,在第一次呼叫時也會更快,因為已經資源載入完成。
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之 單例模式
單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...