設計模式 單利模式

2022-03-13 04:17:57 字數 1390 閱讀 7371

單例模式的核心是保證乙個類只有乙個例項,並且提供乙個訪問例項的全域性訪問點。

1、spring中bean物件的模式實現方式    

2、servlet中每個servlet的例項

3、springmvc框架中,控制器物件是單例模式

4、專案中,讀取配置檔案的類,一般也只有乙個物件。沒有必要每次使用配置檔案資料,每次new乙個物件去讀取

5、資料庫連線池的設計一般也是採用單例模式,因為資料庫連線是一種資料庫資源

6、還有很多......

1、由於單例模式只生成乙個例項,減少了系統效能開銷,當乙個物件的產生需要比較多的資源時,如讀取配置、產生其他依賴物件時,則可以通過在應用啟動時直接產生乙個單例物件,然後永久駐留記憶體的方式來解決。

2、單例模式可以在系統設定全域性的訪問點,優化環共享資源訪問,例如可以設計乙個單例類,負責所有資料表的對映處理。

餓漢式:執行緒安全,呼叫效率高 ,但是不能延遲載入

懶漢式:執行緒安全,呼叫效率不高,能延遲載入

也就是類載入的時候立即例項化物件,實現的步驟是先私有化構造方法,對外提供唯一的靜態入口方法,實現如下:

/**

* 單例模式:餓漢式

* @author

jiachuixun *

*/public

class

singleton

//對外提供乙個獲取例項的靜態方法

public

static

singleton getinstance()

}

餓漢式單例模式**中,static變數會在類裝載時初始化,此時也不會涉及多個執行緒物件訪問該物件的問題。虛擬機器保證只會裝載一次該類,肯定不會發生併發訪問的問題。因此,可以省略synchronized關鍵字

問題:如果只是載入本類,而不是要呼叫getinstance(),甚至永遠沒有呼叫,則會造成資源浪費!

/**

* 單例模式:懶漢式

* @author

jiachuixun *

*/public

class

singleton2

//對外提供乙個獲取例項的靜態方法,為了資料安全新增synchronized關鍵字

public

static

synchronized

singleton2 getinstance()

return

instance;

}}

此種方式在類載入後如果我們一直沒有呼叫getinstance方法,那麼就不會例項化物件。實現了延遲載入,但是因為在方法上新增了synchronized關鍵字,每次呼叫getinstance方法都會同步,所以對效能的影響比較大。

設計模式 單利

單利設計模式 解決乙個類在記憶體只存在乙個物件 步驟 1 建構函式私有化 2 類中建立本類物件 3 提供乙個方法可以獲取到該物件 1 餓漢式 class single private static single s new single public static single getinstanc...

設計模式之單利模式

什麼是單例模式?顧名思義,單例模式,就是對應類自始至終就只有一 例項物件。因為其建構函式私有化,所以不能再類外建立物件。利用靜態成員方法通過類的公有來訪問類的私有方法,從而達到構造乙個例項物件。建構函式宣告為private或protect防止被外部函式例項化,內部儲存乙個private static...

java設計模式 單利模式

單利模式 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,它提供全 局訪問的方法。單例模式是一種物件建立型模式。三個要點 1 單例類只能有乙個例項。2 單例類必須自己建立自己的唯一例項。3 單例類必須給所有其他物件提供這一例項。使用方法 在單例類的內部實現只生成乙...