C++ 生成器模式-配置文件读取
我面临一个设计问题。我想用构建器模式分离构建对象,但问题是对象必须从配置文件构建 到目前为止,我已经决定,所有从配置创建的对象都将存储在DataContext类(所有对象的容器)中,因为这些对象的状态将从传输中更新(因此将它们放在一个位置更容易) 我正在使用外部库来读取XML文件——我的问题是如何隐藏它——将它注入concreteBuilder类是否更好?我必须注意到,生成器类必须创建大量对象,并在最后将它们相互连接起来 基类可以如下所示:C++ 生成器模式-配置文件读取,c++,design-patterns,C++,Design Patterns,我面临一个设计问题。我想用构建器模式分离构建对象,但问题是对象必须从配置文件构建 到目前为止,我已经决定,所有从配置创建的对象都将存储在DataContext类(所有对象的容器)中,因为这些对象的状态将从传输中更新(因此将它们放在一个位置更容易) 我正在使用外部库来读取XML文件——我的问题是如何隐藏它——将它注入concreteBuilder类是否更好?我必须注意到,生成器类必须创建大量对象,并在最后将它们相互连接起来 基类可以如下所示: /* * IDataContextBuilder
/*
* 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 ();
}
如何正确实施?从配置文件构建类的更好模式是什么?我看不出有什么问题,但是您可以插入另一个“Director”类,该类接收特定的生成器,加载配置文件,并生成调用相应生成器子类的对象 我的意思是:
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();
}
};
我不认为这有什么问题,但也许您可以注入另一个“Director”类,该类接收特定的生成器,加载配置文件,并生成调用相应生成器子类的对象 我的意思是:
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();
}
};