單例設計模式
單例設計模式概述
單例模式就是要確保類在記憶體中只有乙個物件,該例項必須自動建立,並且對外提供。
優點
在系統記憶體中只存在乙個物件,因此可以節約系統資源,對於一些需要頻繁建立和銷毀的物件單例模式無疑可以提高系統的效能。
缺點
沒有抽象層,因此擴充套件很難。
職責過重,在一定程式上違背了單一職責
單例模式:
餓漢式:類一載入就建立物件
懶漢式:用的時候,才去建立物件
例子1:單例設計模式之餓漢式
public
classstudent
// 自己造乙個
// 靜態方法只能訪問靜態成員變數,加靜態
// 為了不讓外界直接訪問修改這個值,加
private
private
staticstudent s
=newstudent();
// 提供公共的訪問方式
// 為了保證外界能夠直接使用該方法,加靜態
public
staticstudent getstudent() /*
* 單例模式:保證類在記憶體中只有乙個物件。 *
* 如何保證類在記憶體中只有乙個物件呢?
* a
:把構造方法私有
* b:
在成員位置自己建立乙個物件
* c:
通過乙個公共的方法提供訪問 */
public
classstudentdemo
執行結果:
true
day24.student@1a477b7
day24.student@1a477b7
例子2:單例設計模式之懶漢式/*
* *
面試題:單例模式的思想是什麼
?請寫乙個**體現。 *
*
開發:餓漢式
(是不會出問題的單例模式)
*
面試:懶漢式
(可能會出問題的單例模式)
* a:
懶載入(
延遲載入
)
* b:
執行緒安全問題
* a:
是否多執行緒環境是
* b:
是否有共享資料是
* c:
是否有多條語句操作共享資料是
*/ public
classteacher
private
staticteacher t
=null;
public
synchronized
staticteacher getteacher()
returnt;}
public
classteacherdemo
執行結果:
true
day24.teacher@afccbe
day24.teacher@afccbe
設計模式之單例設計模式
singleton 保證乙個類只有乙個例項,並提供訪問它的全域性訪問點 類初始化時,立即載入這個物件 沒有延時載入的優勢 載入類時,天然的是執行緒安全的!private static singletondemo1 instance new singletondemo1 private singlet...
設計模式之單例設計模式
目錄 1.到底什麼是設計模式?2.什麼是單例設計模式?3.單列設計模式的兩種實現方式 餓漢式懶漢式 執行緒不安全 4.執行緒安全的寫法 餓漢式懶漢式 執行緒安全 設計模式可以理解為別人成功的故事,通用的套路,前人的經驗,設計模式是一種思想,沒有具體的實現。打乙個比方 世界上只有乙個太陽,乙個月亮,單...
設計模式之單例設計模式
核心作用 保證乙個類只有乙個例項,並提供乙個訪問該例項的全域性訪問點 單例模式分為 懶漢式 餓漢式 雙重檢測鎖 內部類式 列舉式 public class lazysingleclass 構造器私有化 public static lazysingleclass getinstance 餓漢式 只是宣...