2013-02-21 62 views
1

假設你有一個應該從配置文件中讀取程序設置的程序。你會用一個存儲它們的單例類來實現它們嗎,每個設置都有一個靜態屬性的類,一個名稱空間內的全局變量?或者更好的東西?在實現程序的配置設置時,什麼是一個好方法?

在我的情況下,我使用全局變量在名稱空間中實現它們,儘管我已經被教導從不使用全局變量來處理任何事情,因爲我已經讀過Singleton模式現在被認爲比他們更糟。

+1

如何將設置傳遞給需要它們的東西? – 2013-02-21 14:44:08

+0

請參閱http://stackoverflow.com/q/137975/951890 – 2013-02-21 14:47:49

回答

3

我會在一個單獨的類或模塊(類似於boost.program_options)中實現它們,並通過依賴注入和參數值將它們傳播到代碼庫的其餘部分。

如果這些值不會改變,您可以將它們放入(或者)一個選項文件中或作爲默認參數值並忘記它們。

這將允許以不同的默認值運行,而不會對代碼庫進行任何更改,並允許您在運行測試時使用不同的默認值/模擬數據。

0

我會使用一個單例返回某種容器,其中包含我需要配置我的程序的所有屬性。國際海事組織,只要單身人士沒有內部國家,這影響了辛格爾頓成員的呼籲,使用該模式沒有問題。對於無狀態,我的意思是對一個單身成員的調用應該總是產生相同的結果,並給定一組參數,不管是什麼。這樣可以保證在程序中不同位置的兩個調用不會以不同的方式影響程序。

相關問題