构建器模式 - 配置文件读数

Builder pattern - configuration file reading

本文关键字:配置文件 模式 构建      更新时间:2023-10-16

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

到目前为止,我已经决定,由配置创建的所有对象都将存储在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 ();
}

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

我没有看到这个问题,但是也许您可以注入另一个接收特定构建器,加载配置文件的'导演'类,并产生调用相应构建器的对象 - 子类。

我的意思是:

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();
    }
};