2011-01-19 29 views

回答

2

從可測性的角度來看,全局變量和單例是非常相似的,它們不必分開處理。良好的OO設計應該像樂高積木一樣適合創建最終的系統。全局的主要問題是你失去了隔離。當您使用全局或單例訪問您的協作者時,這些類不再是獨立的磚塊,您可以輕鬆地進行重組,在另一個項目中單獨使用或重用。當你學習一些依賴於全局變量的類時,可以使用它拖動其餘的設計。在測試中這會產生問題,因爲您必須採取額外的步驟來切斷您的班級與其協作者之間的連接,以便您可以對其進行單獨測試。 (我的博客上寫了more about this

問題的一個很好的解決方案是從外部提供類依賴關係。你只需引入某種機制(也許是一個簡單的類),它將把所有孤立的磚塊連接起來,並將它們連接到組成應用程序的對象圖中。這就是控制反轉和依賴注入的全部內容。

1

沒有各種各樣的全球狀態。要麼是全局狀態,要麼是全局狀態。 Singleton反模式只是消除了各種初始化頭痛,但它與全局變量相同。

如何避免全局狀態?創建一些本地狀態並傳遞參考或指針。在絕大多數事件中,全球狀態是不必要的。有必要的全局狀態的一些例子,如堆,但它們非常罕見,如果你需要問,那麼你幾乎肯定不知道什麼時候是正確的。

相關問題