gpt4 book ai didi

c++ - builder 模式——配置文件读取

转载 作者:行者123 更新时间:2023-11-28 01:56:51 26 4
gpt4 key购买 nike

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

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

我正在使用外部库从 XML 文件中读取 - 我的问题是如何隐藏它 - 将它注入(inject) 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 ();
}

如何正确实现?从配置文件构建类的更好模式是什么?

最佳答案

我认为这没有问题,但也许您可以注入(inject)另一个“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();
}
};

关于c++ - builder 模式——配置文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40885454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com