Java中的設(shè)計(jì)模式中有兩種常見(jiàn)的單例模式,分別是惡漢模式和懶漢模式。
惡漢模式是指在類加載時(shí)就創(chuàng)建唯一的實(shí)例,只在第一次使用時(shí)進(jìn)行初始化。使用這種模式可以避免多線程同步問(wèn)題,但會(huì)增加內(nèi)存開(kāi)銷。
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } }
懶漢模式是指在第一次使用時(shí)創(chuàng)建唯一的實(shí)例。使用這種模式可以避免不必要的內(nèi)存開(kāi)銷,但會(huì)存在多線程同步問(wèn)題。
public class Singleton { private static Singleton instance; private Singleton() {} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }
惡漢模式適用于實(shí)例創(chuàng)建后常被使用的場(chǎng)景,懶漢模式適用于實(shí)例創(chuàng)建后不常被使用的場(chǎng)景。