2011-09-17 71 views
4

裏德·哈斯廷斯給這個響應以下SO問題:接口應用程序設置

Which design patterns can be applied to the configuration settings problem?

我希望創建用於設置查詢,裝載和 節約的接口。通過使用依賴注入,我可以將它注入到每個需要它的組件 中。

有人可以給這個代碼示例嗎?例如,一個電子郵件客戶端的設置類和一個基於此「接口」的FTP客戶端的另一個設置類,該接口可以是DI。我知道你可以爲應用程序中的所有設置(我目前正在做的)做一個全局單例,但是這個Reed的建議很有趣,並且想嘗試一下。

回答

3

對於接口,我會做這樣的事情:

public interface ISettingsProvider 
{ 
    void Load(); 

    T Query<T>(string key); 
    void Set<T>(string key, T value); 

    void Save(); 
} 

那我就曾經實現該接口和依賴注入它讓我們說MEF。我想我會用LinqToXml來實現它加載/保存到XML和可能有一個字典來緩存設置在內存中。另一種方法是將二進制序列化爲序列化並將某個快照轉儲到某處(這有缺點,例如它不可讀)。

如果您只保存字符串和/或數字,那麼XML是一個不錯的選擇。如果你只有字符串,你甚至可以放棄泛型。