單例模式
From Wikipedia, the free encyclopedia
Remove ads
單例模式(單例意即單一實例;參見英文:singleton)係軟件設計模式一種,物件導向編程會用到。用單例模式,意思係話某個類別只得一個實例,一般會將製作實例嘅程序設做 private(私有),簡單講即係用家唔能夠隨便建立新實例;例如想像喺個程式開頭,定義數據庫呢個類別,然後成個程式淨係得一個數據庫嘅實例,而且個建構子係私有嘅,用家冇得隨意建立新嘅數據庫[1]。

概念
單例模式(做嘅係)確保個類別淨係得一個實例,並且全局得一個接入點通向佢度。
呢種設計模式可以用嚟確保某啲數值只有一個。
應用
呢種模式相當有用,譬如喺遊戲編程中,遊戲製作者可以用單例模式嚟建立管理遊戲數據嘅物件,叫遊戲管理器[註 1],好似係以下噉嘅虛擬碼[3]:
類 GameManager:
私有變數 唯一實例 = 無
私有變數 已初始化 = 假
方法 取得實例():
如果 唯一實例 係 無:
唯一實例 = 新 GameManager()
返回 唯一實例
私有 建構子():
如果 已初始化 係 真:
乜都唔做,直接走
gameState =「主選單」
分數 = 0
已初始化 = 真
方法 開始遊戲():
gameState =「遊戲進行中」
分數 = 0
輸出「遊戲開始!」
方法 結束遊戲():
gameState =「遊戲完咗」
輸出「遊戲結束!最終分數係:」+ 分數
方法 加分(分數值):
分數 += 分數值
輸出「而家分數係:」+ 分數
好似噉嘅遊戲管理器如果無端端多咗一嚿,會引致好多問題-例如想像冇用單例模式,遊戲程式行行吓多咗一個遊戲管理器出嚟,兩個管理器各自噉計算玩家攞到幾多分,最後遊戲入便有兩個唔同嘅玩家分數。因此,噉嘅物件就啱晒用單例模式[4]。
Remove ads
睇埋
註釋
- 英文中好多時會叫
GameManager或者類似嘅名。
引咗
外拎
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads
