JAVAJ單例模式的五種實現方式
阿新 • • 發佈:2021-06-16
//餓漢式 class Single1{ private static final Single1 instance = new Single1(); private Single1(){} public static Single1 getInstance() { return instance; } } //懶漢式(執行緒不安全) class Single2{ private static Single2 instance = null; private Single2(){} public static Single2 getInstance() { if(instance == null){ instance = new Single2(); } return instance; } } //懶漢式(加鎖) class Single3{ private static Single3 instance = null; private Single3(){} public static synchronized Single3 getInstance(){ if(instance == null){ instance = new Single3(); } return instance; } } //懶漢式(雙重檢查) class Single4{ private static Single4 instance = null; private Single4(){} public static Single4 getInstance() { if(instance == null){ synchronized (Single4.class){ if(instance == null){ instance = new Single4(); } } } return instance; } } //懶漢式(列舉實現) enum Single5{ INSTANCE(); private String msg; private Single5(){ System.out.println("單例初始化"); } }