Java中單例模式是一種常見的設計模式,其中懶漢式和餓漢式是兩種常見的實現方式。懶漢式在第一次調用時才實例化單例對象,而餓漢式則在類加載時就實例化單例對象。
下面是懶漢式的示例代碼:
public class LazySingleton { private static LazySingleton instance; private LazySingleton() {} public static synchronized LazySingleton getInstance() { if(instance == null) { instance = new LazySingleton(); } return instance; } }
為了保證線程安全,getInstance方法被synchronized修飾,但這也影響了性能。
餓漢式的示例代碼如下:
public class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); private EagerSingleton() {} public static EagerSingleton getInstance() { return instance; } }
由于是在類加載時就實例化,所以getInstance方法不需要synchronized修飾。這種方式簡單直接,但是如果單例對象比較龐大,可能會導致類加載較慢。
懶漢式和餓漢式都有其適用場景和弊端,需要根據具體情況選擇合適的實現方式。