Java作為一門廣泛應用于企業級開發的語言,在開發中有各種各樣的設計模式,懶漢和單例模式就是其中之一。
懶漢式單例模式指的是:一個類在初始化的時候并不會創建對象實例,只有當一定條件達成時才會創建對象實例,也就是所謂的“懶”。
public class LazySingleton{
private static LazySingleton instance = null;
private LazySingleton(){}
public static synchronized LazySingleton getInstance(){
if(instance==null){
instance = new LazySingleton();
}
return instance;
}
}
從上面的代碼片段可以看到,懶漢式單例模式的關鍵是將對象的實例化操作放在一個函數中,并用一個靜態變量保存,只有在需要使用對象時才進行實例化操作。當對象被實例化后,再次獲取實例時直接返回靜態變量存儲的實例。
但是懶漢式單例模式也存在線程安全的問題,當多個線程同時調用getInstance()函數時,如果沒有考慮線程安全問題,則會導致實例化多個對象的情況。所以通常會在getInstance函數前添加一個synchronized關鍵字,保證線程安全。
總之,懶漢式單例模式提供了一種延遲對象實例化的方法,避免對象過早被創建導致資源的浪費。