Java設計模式 Singleton模式

2021-07-30 14:57:30 字數 947 閱讀 1782

單例模式:我們通常又稱之為單子或單態模式。

為什麼會出現單例模式呢?因為需求,有時候我們需要針對某個類,我們得到它的例項是同乙個,無論獲取多少次。因此我們就開始想怎麼實現這個功能了。

①首先我們想到的肯定是不能在類的外面,採用new 關鍵字來建立例項了,因為每new乙個就新產生了乙個物件。因此我們 就想到了將構造器私有化,new的物件放在類裡面去。 

②在類裡面,再提供乙個public 的靜態方法供外部去呼叫,通過方法得到該類的例項。這樣我們就實現了單例。

demo**如下:

ps:有人也將getinstance()這個方法稱之為靜態工廠方法。

我們測試一下,結果如下:

當然,在某些書籍上面將上面的單例實現稱之為「餓漢」單例模式。所以又有另一種「懶漢」單例模式,如下,基本原理是一樣的,將構造器私有化:

然而在多執行緒高併發的情況下。可能還是會出現多個物件存在的情況,因此我們可以將方法新增同步鎖的機制,但這樣又會導致效能降低。

如下:

擴充套件一下思維,我們的單例可以,擴充套件為多例,如下:

我們將需要的car 都放在 carlist裡面,就可以實現多例了,最典型的例子就是我們jdbc裡面的連線池,就應該是多例實現的。

java設計模式之單列模式(Singleton)

本篇只是簡單介紹單列模式,主要是讓初學者理解單列模式,各種加鎖 多實現 業務場景待以後補充。關鍵字 只產生乙個例項,構造器私有化。構造器私有化 private 是為了禁止singleton類外部呼叫建構函式。如果從singleton類以外的 中呼叫建構函式 new singleton 就會出現編譯錯...

Java設計模式之單例模式(Singleton)

前言 在總結okhttp的時候,為了管理網路請求使用到了單例模式,晚上實在沒啥狀態了,靜下心來學習總結一下使用頻率最高的設計模式單例模式。單例模式 單例模式確保某個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。單例特點 單例分類 1 懶漢單例 1 非執行緒安全實現 public class...

設計模式 建立型模式 單例模式 Singleton

4種單例模式 單執行緒單例 類class single private static single sin null public static single createinstance return sin 呼叫 console.writeline 單執行緒單例模式 single sin sin...