设计配置共享公共属性

时间:2016-05-21 10:17:10

标签: c++ json c++11 configuration

我有多个具有JSON配置文件的进程。每个应用程序都与其他应用程序具有一些共同属性(例如日志级别)大多数应用程序也有类似的实体,具有不同的实现。

目前,每个应用程序都有自己的Configuration类,解析器,序列化器和验证器。它看起来像是:

class Configuration {
    LogLevel log_level();
    std::vector<App1Entity> entities();
}

class ConfigurationParser {
    Configuration parse(const std::string& content);
}

class Verifier {
    bool is_valid(const Configuration& config);
}

当前设计的问题是每个应用程序都应该解析/序列化公共属性(代码重复),但最重要的是,应该在Verifier中检查相同的约束(例如,实体不应该具有相同的id )。

因此,我正在寻找一个好的设计,允许我对代码进行分解,并确保自动检查公共约束(例如,如果配置包含实体,请检查没有重复的ID)。我正在考虑提供用于检查约束的函子(或函数),但我希望能够在配置符合某些条件时自动应用检查。

关于解析/序列化代码分解的任何建议也是受欢迎的。 :)

0 个答案:

没有答案