單例模式是一種常用的軟件設計模式。單例對象的類必須保證只有一個實例存在。也就是整個系統只能有一個的全局對象。
因此,單例模式可以確保應用該模式的系統中一個類僅僅有一個實例。
比如,線程池、日誌、對話框等可設計成單例。
1、單例模式類型
單例模式屬於創建型模式。
2、單例模式類圖
3、單例模式要素
①私有的構造方法。
②指向自己實例的私有靜態引用。
③以自己實例為返回值的靜態的公有方法。
4、單例模式實例代碼
4.1、餓漢式單例
public class Singleton {
private Singleton(){}
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
}
4.2、懶漢式單例
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static synchronized Singleton getInstance(){
if (instance == null) instance = new Singleton();
return instance;
}
}
餓漢式單例在單例類被加載時,實例化一個對象;而懶漢式單例只有在真正使用時才會實例化一個對象。因此,從速度和反應時間角度來講,餓漢式要好一些;從資源利用效率上說,懶漢式要好一些。
5、單例模式注意事項
①單例模式的構造器必須私有,即不能通過構造器創建對象;
②通過公有的靜態方法,返回該類的唯一實例。
閱讀更多 iT例史 的文章