單例模式(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使用列舉還可以避免反射獲取類的私有構造方法從而建立...
設計模式 理解單例設計模式
設計模式分類 結構型行為型 建立型 單例模式屬於建立型設計模式 單例模式主要使用在 日誌記錄 將多項服務的日誌資訊按照順序儲存到乙個特定日誌檔案 資料庫操作 使用乙個資料庫物件進行操作,保證資料的一致性 印表機後台處理程式 以及其他程式 該程式執行過程中 只能生成乙個例項 避免對同一資源產生相互衝突...
設計模式之單例模式理解
單例,從名字上面就可以看出來,首先他肯定是乙個類例項,然後他同時只能允許乙個訪問,那麼這樣才構成了乙個單例,單例模式在我們實際開發中應用非常廣泛,比如我們建立了乙個資料庫連線池,然後又建立了乙個工具類把這個連線池與執行緒進行繫結,那麼我們就可以實現基於執行緒來實現對事務管控,資料庫連線是多次的,但是...