小白筆記(設計模式之單例模式),後續發現問題會進行修改,大神勿噴,謝謝。
阿新 • • 發佈:2019-02-03
提高效率 public code 靜態屬性 懶漢 加載 屬性 設計模式之單例模式 syn
單例模式
package com.bjsxt.thread.syn; /** * 單例創建方式 * 1.懶漢式 * 1)構造器私有化 * 2)聲明私有的靜態變量 * 3)對外提供訪問屬性的方法(靜態方法,確保該對象存在) * @author Administrator * */ public class Myjvm { private static Myjvm instance; private Myjvm() { } public static Myjvm getInstance(){ if (null==instance) {//提高效率 synchronized(Myjvm.class) { if (null==instance) {//安全 instance = new Myjvm(); } } } return instance; } } /** * 餓漢式 * 1)構造器私有化 * 2)聲明私有的靜態屬性,同時創建該對象 * 3)對外提供訪問屬性的方法 * @author Administrator * */ class Myjvm2 { private static Myjvm2 instance = new Myjvm2(); //類加載時候創建 private Myjvm2() { } public static Myjvm2 getInstance(){ return instance; } } /** * 類在使用的時候加載,延緩了加載時機 * @author Administrator * */ class Myjvm3 { private static class JVMHolder{ private static Myjvm3 instance = new Myjvm3(); //類加載時候創建 } private Myjvm3() { } public static Myjvm2 getInstance(){ return instance; } }
小白筆記(設計模式之單例模式),後續發現問題會進行修改,大神勿噴,謝謝。