實戰設計模式之單例模式

2021-06-17 15:07:10 字數 1255 閱讀 5578

單例模式的好處能夠幫助我們實現物件只建立乙個例項,並且提供乙個全域性的訪問介面。在android開發中,單例模式能夠很好的幫助我們減少物件的建立,從而提高應用的整體效能。在web程式中,單例模式常常應用在工具類等應用場合,例如jdbc連線工具類

初次接觸單例模式,先看乙個簡單的demo:

public class sendservice 

//向外界統一暴露乙個介面,如果呼叫sendservice的其他方法,必須呼叫此方法生成物件

public static sendservice getinstence()

return sendservice;

} //其它方法,盡量避免申明為static,否則失去單例模式就失去了意義

public void otherfunction()

}

以上簡單demo經過簡單測試會發現,在多執行緒中會發現問題。

可以將為getinstence方法加上乙個synchronized

同步鎖,但是這種情況下又影響了系能!

後來人家就在此基礎上加工能為餓漢式和懶漢式兩種單例模式

餓漢式:

/**

* 餓漢式

*/public class sendservice

public static sendservice getinstance()

}

餓漢式不會出現併發問題,在

classloader

載入類後

例項就會第一時間被建立,餓漢式的建立方式在一些場景中將無法使用:當

例項的建立是依賴引數或者配置檔案的,在

getinstance()

之前必須呼叫某個方法設定引數給它,那樣這種單例寫法就無法使用了。

懶漢式:

/** 

* 懶漢式

*/

public class sendservice

public static sendservice getinstance()

}

懶漢式仍然使用jvm本身機制保證了執行緒安全問題;由於singletonholder是私有的,除了getinstance()之外沒有辦法訪問它,因此它是懶漢式的;同時讀取例項的時候不會進行同步,沒有效能缺陷;也不依賴jdk版本。

第乙個demo到第二個demo之間的原因講的不是很清楚,待筆者在實際開發中有了更深的理解後再補充吧!

設計模式實戰之單例模式

二 程式設計實戰 三 總結 保證系統中乙個類只有乙個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。如果希望在系統中某個類的物件只能存在乙個,單例模式是最好的解決方案。各種controller類和service類以及標記component類 這個真的太多了 getter publ...

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...