我有一个名为的类,该类DS
可以(1)从文件中读取数据并从头开始构建数据结构,或(2)从文件中读取预构建的数据结构。我最初写道:
class DS
{
DS(std::string file_name, bool type);
}
file_name
要读取的文件在哪里,并type
指定我们正在读取的内容,数据或预构建的数据结构。就我而言,这种方法不是很优雅。我还尝试了以下方法:
class DS
{
DS(std::string file_name);
void CreateFromData();
void ReadExisting();
}
但是由于一旦建立便不允许修改,所以我不希望用户先调用CreateFromData
,然后再调用ReadExisting
。
是否有一些设计模式可以解决此问题?
如果构造函数签名的语义不够充分,请使用静态工厂函数。无需花哨。
class DS {
private:
enum class Source { FromExisting, FromData };
DS(const std::string& path, Source type);
public:
static DS ReadExisting(const std::string& path) {
return DS(path, Source::FromExisting);
}
static DS CreateFromData(const std::string& path) {
return DS(path, Source::FromData);
}
};
/* ... */
DS myData = DS::ReadExisting("...");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句