[C#/Unity] 回顧所使用過的 Singleton 實作方式 – Difference of Four Singleton practicing

Singleton 是個充滿爭論的設計模式,從某些角度來看,Singleton 並不完全符合物件導向設計原則的所有理念,但是 Singleton 又某種程度上的不易被取代。所以一般來說的建議是:少用、小心地用。

過去我曾設計兩套實作方式,企圖用集合管理的方式,完全取代單一 Singleton 的使用:

不過最近我又把單一 Singleton 撿回來使用了,並回顧了我所遭遇過的使用情境,對何時該用何種 Singleton 實作,立下一套主觀原則。

Read More »

廣告

C# 上 Observer pattern 的實作差異 – observer pattern on C#

前陣子有注意到,大多數的書籍或網站資料在介紹 設計模式(Design Pattern) 時,往往所採用的實作方式都是以 C++ 或 JAVA 為實作基礎,甚至在 Unity 為主題的書籍上,也沒有針對 C# 做進一步說明。

事實上作為一個不斷擴充版本及功能的語言,.NET 的 C# 的使用上提供了更多樣化的類別或介面,可以用不太一樣的方式來實作設計模式,妥善的應用 C# 所帶來的便利。

最明顯的例子,就是利用 C# 的 delegate,可以更加方便的實作 觀察者模式(Observer pattern),甚至讓應用上更加靈活。本文記錄了三種作法可讓大家比較參考:

  • 純 class
  • Delegate (Action)
  • Event & EventHandler

Read More »

[C#/Unity] 更多 Singleton – More Singleton in Unity

在舊文章 應用 Singleton pattern 及 Unity Component 做系統拆分與管理 – Dividing your game system in unity. 中,我開發了一套架構來作為單一 Singleton 的替代方案,用於統一管理會在整個 Unity 專案中使用到的遊戲功能系統。

該篇文章中的 GameSystemMono (即仿 Singlton 的組件) 繼承了 MonoBehaviour,來實現一些設計上的想法。不過帶來優點的同時也產生了一些限制,經過與他人的討論後,認為還是需要一個不依賴 MonoBehaviour 的 Singleton 組件方案,兩者互相補足,而這個想法終於在最近進行了實作。

Read More »

為 Unity 準備一個泛用的狀態模式 – prepare a State pattern for Unity

State pattern 是我使用次數最多的設計模式,在 Unity 遊戲的開發中被我用於 程式流程的控制、規則的彈性編輯、簡易 AI 的撰寫、腳色控制器 的設計等,是應用相當廣泛的模式。

因為次數太多了,索性事先設計好基本的類別,當需要的時候便可以隨時隨地使用 State pattern,本文便是藉機介紹了 State pattern 及我的通用作法。

Read More »

應用 Singleton pattern 及 Unity Component 做系統拆分與管理 – Dividing your game system in unity.

在使用 Unity 開發遊戲的時候,為了實現各種功能,往往會不斷衍伸出一個又一個的系統,分別執掌不同的任務,可能是為了管理 UI 介面,也可能是為了建立連線,又或者是為了管理存檔。一個個的系統往往又為了方便而採用 Singleton pattern,或者互相注入,最後的結果就是系統之間的關係複雜,程式碼不易維護及重複使用。

於是乎我就一直思考著如何將一個巨大的系統架構,拆分成一個個獨立且靈活的小系統,就像電腦與周邊設備可以用 USB 輕易連接與斷開,我也希望我所開發的一個個系統,可以自由自在地安置在不同的開發專案之中。

如今這是我的初步成果,一套用於拆分以及管理各個子系統的架構:

gamesystemmanager

Read More »

學習設計模式的感想 – what benefits I get after studying design pattern

接觸設計模式的時間說長不長說短不短,但自從接觸了之後,才發現不管網路或者開發者社群,時不時都會有人提出 如何學習設計模式 的疑問。對於只是聽聞 設計模式 這個名稱,並被灌輸這個很重要,必須去學的想法的人,設計模式可能就像神祕學一般難易入門。

其實設計模式沒有這麼神奇與強大,只要累積一定的程式開發經驗之後,設計模式的想法基礎自然會逐漸被你聽聞或者吸收 (頓悟)。所謂的學習設計模式,只不過是強行頓悟的一個過程,像是打坐或冥想一般。

這篇文章是我接觸設計模式後的想法彙整,且提到了些關於學習過程的想法,希望可以幫到想接觸的人。

Read More »

初探 23種 設計模式 – when I first time use design pattern

幾個月前我讀了本關於在遊戲開發應用設計模式的書 <設計模式與遊戲開發的完美結合>,這是我第一次接觸 design pattern 設計模式 (求學期間還真沒聽過),才看了前幾章,我就想:這是甚麼!原來有這麼厲害的東西啊!

全書閱畢後,也嘗試實踐於我的專案之中,受益良多。不過也發現我對 設計模式 的熟悉度與瞭解還不夠充分,無法隨心所欲的發揮它的效用,於是又有了第二本書 <設計模式的解析與活用> 正要閱讀。在仔細閱讀這本新書之前,我回想了在這幾個月我實踐了多少設計模式,做下筆記,也算是第一篇書本的讀後心得。

Read More »