單例設計模式

一個單例的目的是保證一個類僅有一個例項*,並*提供訪問它的全域性訪問點。如果你只需要一個例項方便的全域性訪問點,而不是兩者,請在轉向單例之前考慮其他選項。

全域性變數可能使得更難以推理程式碼。例如,如果其中一個呼叫函式對從 Singleton 接收的資料不滿意,那麼現在必須首先跟蹤首先給出單例壞資料的內容。

單例還鼓勵耦合 ,這是一個術語,用於描述連線在一起的兩個程式碼元件,從而減少每個元件自身的自我控制措施。

單例並不友好。當一個類具有全域性訪問點時,每個執行緒都能夠訪問它,這可能導致死鎖和競爭條件。

最後,如果在錯誤的時間初始化,延遲初始化可能會導致效能問題。刪除延遲初始化還會刪除一些首先使 Singleton 感興趣的功能,例如多型(請參閱子類)。

來源: 遊戲程式設計模式羅伯特·奈斯特龍