是的,你應該在乎,爲了一個非常實用的理由!
您想要使用設置的類絕對不需要依賴於這些設置的存儲方式。
想象一下您將來希望支持您的應用程序的多個主題。你將最終不是一個,而是很多可能性爲您的儀表板的尺寸,例如:
AppSettings.Views.ThemeA.Windows.Dashboard.Size;
AppSettings.Views.ThemeB.Windows.Dashboard.Size;
你的UI類仍然只需要一個東西,它的變量windowSize的值,它並不需要知道哪些主題目前被使用。
無論您擁有哪種XML接口,您都不希望依賴於代碼中的任何位置的模式,而只能在一箇中心位置。
例如,你可以把設置在一個Map內部使用,如:
public class SettingsReader {
public static final String VIEW_WINDOW_DASHBOARD_SIZE = "Views.Windows.Dashboard.Size";
private Map settings = new Hashmap();
public SettingsReader(AppSettings appSettings) {
settings.put(VIEW_WINDOW_DASHBOARD_SIZE, appSettings.Views.Windows.Dashboard.Size);
}
public String getSettingValue(String key) {
return settings.get(key);
}
}
然後你只需要一個地方來重構,以支持一個主題,像這樣:
public class SettingsReader {
public static final String VIEW_WINDOW_DASHBOARD_SIZE = "Views.Windows.Dashboard.Size";
private Map settings = new Hashmap();
public SettingsReader(AppSettings appSettings, String theme) {
settings.put(VIEW_WINDOW_DASHBOARD_SIZE, appSettings.Views + theme + Windows.Dashboard.Size);
}
public String getSettingValue(String key) {
return settings.get(key);
}
}
最後一點,僅僅是因爲我的僞代碼和java代碼的混合可能會混淆人們,特別是appSettings.Views + theme + Windows.Dashboard.Size
:使用XML接口時,xPath通常非常有用,即使在使用對象時也是如此,這要歸功於良好的庫JXPath(用於JAV a,我不知道其他語言)。
感謝您的回答,達米安。 – devuxer 2010-09-20 23:15:45