我理解的設計模式 單例模式

2021-07-11 12:49:45 字數 1233 閱讀 1078

單例模式(singleton pattern)

什麼是單例模式,四人幫的書裡面這麼定義:

保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

可以這麼理解:在乙個程序裡,這個類只會被例項化一次,而且可以很方便的被呼叫。

實現:惡漢式:

載入類的時候,在類的內部定義乙個例項,外部呼叫則開放給乙個靜態函式。

lua例項:

(不要問我為什麼用lua,最近寫手遊lua用得多,but c++就用的少了,只有修改cocos引擎底層的時候才用的到。

lua中class的實現可以參照quick-cocos2d-x的framework

)local singleton = class("singleton")

function

singleton:ctor()

endfunction

singlenton:dosomething()

print("hey, u get me")

endlocal instance = singleton.new()

function

singleton.getinstance()

return instance

endsingleton.getinstance():dosomething()

控制台:

hey, u get me

懶漢式:

外部呼叫開放給乙個靜態函式,並在呼叫的時候檢測有沒有例項化。

local singleton = class("singleton")

function

singleton:ctor()

endfunction

singlenton:dosomething()

print("hey, u get me")

endlocal instance

function

singleton.getinstance()

if instance == nil then

instance = singleton.new()

endreturn instance

endsingleton.getinstance():dosomething()

控制台:

hey, u get me

比較惡漢式和懶漢式,惡漢式在多次載入類的時候會多次初始化,懶漢式同步處理會降低速度。

理解設計模式 單例模式

定義 確保要建立的類只有乙個例項 對於頻繁建立的物件,可以省略其建立時間,同時可以減輕gc的壓力 避免對共享資源的多重占用 使用場景 單例模式寫法很多,這裡列舉以下三種 1 最簡單的寫法 使用列舉物件public enum singletonenum使用列舉還可以避免反射獲取類的私有構造方法從而建立...

設計模式 理解單例設計模式

設計模式分類 結構型行為型 建立型 單例模式屬於建立型設計模式 單例模式主要使用在 日誌記錄 將多項服務的日誌資訊按照順序儲存到乙個特定日誌檔案 資料庫操作 使用乙個資料庫物件進行操作,保證資料的一致性 印表機後台處理程式 以及其他程式 該程式執行過程中 只能生成乙個例項 避免對同一資源產生相互衝突...

設計模式之單例模式理解

單例,從名字上面就可以看出來,首先他肯定是乙個類例項,然後他同時只能允許乙個訪問,那麼這樣才構成了乙個單例,單例模式在我們實際開發中應用非常廣泛,比如我們建立了乙個資料庫連線池,然後又建立了乙個工具類把這個連線池與執行緒進行繫結,那麼我們就可以實現基於執行緒來實現對事務管控,資料庫連線是多次的,但是...