加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

设计模式 – 我是否应该注意传递XML设置文件的类表示违反了demet

发布时间:2020-12-16 23:02:13 所属栏目:百科 来源:网络整理
导读:我正在使用工具自动生成分层组织的 XML文件的类表示. XML文件是我的应用程序需要能够访问的设置文件(只读). 如果我将顶级节点(例如,AppSettings)传递给需要访问一个或多个设置的类,我可以很容易地得到类似下面的代码: var windowSize = AppSettings.Views.W
我正在使用工具自动生成分层组织的 XML文件的类表示. XML文件是我的应用程序需要能够访问的设置文件(只读).

如果我将顶级节点(例如,AppSettings)传递给需要访问一个或多个设置的类,我可以很容易地得到类似下面的代码:

var windowSize = AppSettings.Views.Windows.Dashboard.Size;

这似乎严重违反了得墨忒耳法,但我想知道我是否应该关心.我可以花很大的力气只传递每个课程所需的确切设置,但我很难看到这些多点会在这种情况下伤害我.

是否将我的代码与我的XML文件格式紧密耦合,可能会在将来产生维护问题或其他问题,或者这是一个不遵循OOP设计原则而有意义的例子吗?

解决方法

是的,你应该关心,这是一个非常务实的原因!

您想要使用设置的类绝对不需要依赖于这些设置的存储方式.

想象一下,您希望将来为您的应用程序支持多个主题.您的仪表板尺寸最终可能不是一个,而是多种可能性,例如:

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主题Windows.Dashboard.Size:当使用XML接口时,xPath通常非常有用,即使在处理对象时也要感谢漂亮的图书馆JXPath(对于java,我不知道其他语言).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读