單例模式學習筆記

2021-08-19 03:01:12 字數 1141 閱讀 1529

public class student 

// 自己造乙個

// 靜態方法只能訪問靜態成員變數,加靜態

// 為了不讓外界直接訪問修改這個值,加private

private static student s = new student();

// 提供公共的訪問方式

// 為了保證外界能夠直接使用該方法,加靜態

public static student getstudent()

}

private static student s = new student();
這句,一進來就造物件,就像剛回到家,看到桌子上有一堆吃的,立馬就吃了,像乙個「餓漢」,故稱為「餓漢式」

public class teacher 

private static teacher t = null;

public synchronized static teacher getteacher()

return t;

}}

懶漢式:用的時候,才去建立物件,故稱為「懶漢式」

開發用餓漢式:(是一種不會出問題的單例模式,因為

public static student getstudent()
這句為原子性操作,非多條語句操作,故不會存在多執行緒安全問題)

面試時寫**體現優先寫懶漢式:(可能出問題的單例模式)

那麼懶漢式會出什麼問題呢?

a延遲載入  

b執行緒安全問題,因為在如果多執行緒環境中,**中的t物件為共享資料,且存在多條語句對共享資料進行操作,便有可能出現執行緒安全問題。所以要加入關鍵字synchronized

jdk中的runtime類便是單例模式餓漢式的例子

class runtime 

private static runtime currentruntime = new runtime();

public static runtime getruntime()

}

單例模式學習筆記

單例 優點1.減少記憶體開支 2.減少效能開銷 3.寫檔案時避免資源多重占用 4.優化共享資源訪問 缺點1.自行例項化的特點導致無法擴充套件,只能修改原始碼 2.對測試不利,只有全部完成單例 才能測試 3.與單一職責原則有衝突 適用1.生成唯一序列號的環境 2.整個專案需要乙個共享訪問點 3.建立物...

單例模式學習筆記

靜態內部類單例 反射破壞單例 序列化破壞單例 註冊式單例 threadlocal 執行緒單例 單例模式 singleton pattern 是指確保乙個類在任何情況下都絕對只有乙個例項 public class hungrysingleton public static hungrysingleto...

學習筆記 單例模式

餓漢模式,即認為單例物件在單例所在的類初始化時即例項化了。因此無論該單例物件是否真正的被呼叫,都會進行例項化。例項化的操作放在靜態變數或者靜態 塊中。public class hungrysingleton private final static hungrysingleton hungrysin...