設計模式學習(Java) 單例模式

2021-07-23 11:57:00 字數 1138 閱讀 4164

其實我們在程式設計過程中往往都用到了一些設計模式,只是不知道他們還有具體的名稱定義

翻閱了《設計模式之禪》後,覺得自己有必要系統地了解和學習一下程式設計的原則和一些常用的設計模式。

為了加深自己的理解,在此記錄一下。

單例模式

顧名思義,就是指某乙個類在程式中只會有乙個例項。

為什麼使用單例模式?

(1)節省記憶體

記憶體中始終只存在乙個例項,避免了重複建立和丟棄例項造成的記憶體浪費

(2)節省資源

在進行io操作的時候,通過建立乙個入口防止資源的占用

(3)統一資訊

也可以直接使用static宣告變數,單例或者static可以確保某些變數全域性統一

如何實現單例模式

(1)餓漢模式

public class singleexample

//獲取固定例項的方法(此方法返回的永遠是同乙個例項)

public static singleexample getinstance()

public static void say()

}

(2)懶漢模式

public class singleexample

//獲取例項,如果已經存在乙個例項了,直接將其返回,沒有則新建乙個例項

public static singleexample getinstance()

return instance;

}public static void say()

}

其中例子裡的懶漢模式其實是執行緒不安全的,就是在高併發的多執行緒場景中可能會產生多個例項。

為什麼?

在多個執行緒中同時執行getinstance方法中判斷語句時,當執行緒1判斷得出instance=null並開始建立例項,同時在例項穿件成功前,執行緒2也進行了判斷,而此時instance=null,執行緒2也會建立乙個例項。 解決

給getinstance()方法新增同步鎖(synchronized

Java學習 單例設計模式

設計模式 是對問題行之有效的方法,是一種思想。單例模式 在其所解決的問題中,乙個類中只有乙個物件存在。這乙個物件好比是乙個共同資料,多個程式操作的其實這乙個物件。q1 如何保證物件唯一性?1.不允許其他程式new乙個物件 2.在這個類中就已經存在乙個物件 3.通過方法來讓其他程式來獲取這唯一的物件 ...

Java設計模式 單例模式

單例模式 singleton 顧名思義,就是乙個類只有乙個例項。作為物件的建立模式,單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。顯然單例模式的要點有三個 一是某個類只能有乙個例項 二是它必須自行建立這個例項 三是它必須自行向整個系統提供這個例項。從具體...

java設計模式 單例模式

這個模式是很有意思,而且比較簡單,但是我還是要說因為它使用的是如此的廣泛,如此的有人緣,單例就是單 一 獨苗的意思,那什麼是獨乙份呢?你的思維是獨乙份,除此之外還有什麼不能山寨的呢?我們舉個比較難複製的物件 皇帝中國的歷史上很少出現兩個皇帝並存的時期,是有,但不多,那我們就認為皇帝是個單例模式,在這...