Yes, you should care, for a very pragmatic reason!
The classes where you want to use your settings absolutely don't need to be dependent on the way those settings are stored.
Imagine in the future you want to support multiple themes for your application. You will end up with not one, but many possibilities for your dashboard size, for example:
AppSettings.Views.ThemeA.Windows.Dashboard.Size;
AppSettings.Views.ThemeB.Windows.Dashboard.Size;
Your UI class still only needs one thing, a value for its variable windowSize, it doesn't need to know which theme is currently used.
It's true wherever you have an XML interface, you don't want to be dependent on the schema everywhere in your code but only in one central place.
For example you could put the settings in a Map to be used internally, like this:
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);
}
}
Then you just have one place to refactor to support a theme, like this:
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);
}
}
A final note, just because my mix of pseudo code and java code may confuse people, especially the appSettings.Views + theme + Windows.Dashboard.Size
: when working with an XML interface, xPath is usually very useful, even when working with objects thanks to the nice library JXPath (for java, I don't know for other languages).