台灣最大程式設計社群網站
線上人數
723
 
會員總數:245220
討論主題:189091
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 透過Singleton Pattern 獨體模式,讓物件在被需要的時候才建立物件
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
透過Singleton Pattern 獨體模式,讓物件在被需要的時候才建立物件
價值 : 0 QP  點閱數:1316 回應數:0

樓主

E-Troy 版主
初學者
80 52
283 11
發送站內信

Design Pattern在Java領域之中己經行之有年,記得我剛接觸這樣的設計時,還是任職遊戲開發時,同事們相互分享的技術,那時候在國外,設計模式已經是一種標準,當然我其實在這領域中,還算是相當的淺,後期在開發遊戲Server之後,因為用的是Java,所以也慢慢的走向這樣的設計。
C#有Java物件導向的特性,和C/C++的執行效能,運用在Design Pattern的設計結構,能充份發揮C#的特性。

談論Design Pattern時,我們談論程式產生的「需求」,程式裡有一種類別設計模式,必須保證它們在系統中只存在一個實例,才能確保它們的邏輯正確性、以及良好的效率。

以下是「需求的範例」:



上面的語法在Sngle-Thread情況當然看似正常執行沒問題,但是在Multi-Thread的情況下卻會出現錯誤的情況。
如兩個Thread同時運行到 if (instance == null)判斷是否被實體化,一個Thread判斷為True後,在產生
SingleThread_Singleton之前,另一個線程也判斷(instance == null),結果也為True。
這樣就違背了Singleton模式的原則,一個類別只有一個實例:


這樣的程式結構就能在Multi-Thread情況下實現Singleton。
當然上述是以Dynamic方式呈現,如果要用Static的方,可以改寫下列的方式:

這樣的設計結構,效果是一樣的,唯一不同的是,是記憶體的配置,Static在程式裡的生命週期是只有當程式結束執行,才會移除,這是要注意的地方。

搜尋相關Tags的文章: [ C# ] , [ Singleton Pattern ] , [ 獨體模式 ] ,
本篇文章發表於2015-08-13 15:21
== 簽名檔 ==
上帝的藝術-電腦神手的領域 - http://etroy.pixnet.net/blog
上帝的藝術-微軟的神域 - http://etroy-com.blogspot.tw/
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
目前尚無任何回覆
   

回覆
如要回應,請先登入.