1. 單例模式
public class StaticSingleton { private StaticSingleton(){ System.out.println("StaticSingleton is create"); } private static class SingletonHolder{ private static StaticSingleton instance = new StaticSingleton(); } public static StaticSingleton getInstance() { return SingletonHolder.instance; } }
在這個實現中,單例模式使用內部類來維護單例的實例,當StaticSingleton被加載時,其內部類並不會被初始化,故可以確保當StaticSingleton類被載入JVM時,不會初始化單例類,而當getInstance()方法被調用時,纔會加載SingletonHolder,從而初始化instance。同時,由於實例的建立是在類加載時完成,故天生對多線程友好,getInstance()方法也不需要使用同步關鍵字。