Builder模式 - 配置文件读取

时间:2016-11-30 10:07:16

标签: c++ design-patterns

我正面临设计问题。我想用构建器模式分离构建对象,但问题是必须从配置文件构建对象。

到目前为止,我已经决定从配置创建的所有对象都将存储在DataContext类(所有对象的容器)中,因为这些对象状态将从传输中更新(因此更容易将它们放在一个位置)

我正在使用外部库从XML文件中读取 - 我的问题是如何隐藏它 - 将它注入concreteBuilder类更好吗?我必须注意到构建器类必须创建大量对象,最后将它们相互连接起来。

基类看起来像这样:

/*
 * IDataContextBuilder
 * base class for building data context object
 * and sub obejcts
 */
class IDataContextBuilder {
public:
    /*
     * GetResult()
     * returns result of building process
     */
    virtual DataContext * GetResult () = 0;
    /*
     * Virtual destructor
     */
    virtual ~IDataContextBuilder() {    }
};

class ConcreteDataContextBuilder {
public:
     ConcreteDataContextBuilder(pugi::xml_node & rootNode);
     DataContext * GetResult ();
}

如何正确实施?从配置文件构建类可能有什么更好的模式?

1 个答案:

答案 0 :(得分:2)

我没有看到它的问题,但也许你可以注入另一个'Director'类接收一个特定的构建器,加载配置文件,并生成调用相应的builder-subclasses的对象。

我的意思是:

class DataContextDirector {
public:
    void SetBuilder(IDataContextBuilder* builder);

    void SetConfig(const std::string& configFilePath); // or whatever

    DataContext* ProduceObject() {
        // pseudo-code here:
        // myBuilder->setup(xmlNodeOfConfig);
        // return myBuilder->GetResult();
    }
};