我正在考虑一个加载器类,并想出了两种不同的方法。
class Loader{
public:
Loader(const Path& path);
File load() const;
private:
Path path_;
};
对比
class Loader{
public:
Loader();
File load(const Path& path) const;
};
使用第一种方法,每个文件需要一个 Loader,并且 Loader 类代表一种状态。使用第二个,我可以使用一个加载器类加载不同的文件。 除了这些明显的差异之外,您会选择哪种方法?为什么或者是否有第三种可能更好的方法?
最佳答案
还有其他方法。
如果加载文件时在Loader
类中不维护任何状态,那么您可以简单地编写一个自由函数
File load(const Path& path); //a free function.
或者,如果您希望函数成为成员函数,则可以将其设为静态
class Loader{
public:
static File load(const Path& path);
};
//usage
Loader::load(path);
有时这样的解决方案完全取决于具体情况,有时取决于公司/程序员的个人喜好和品味。没有一种最佳解决方案!
您甚至可以选择在 File
类本身中编写 load
函数:
class File {
public:
bool load(const Path& path); //non-static, or/and the next one!
static File load(const Path& path); //static
};
在这里,也许您想要更改函数的名称:open()
似乎比 load()
更好。
关于C++ Loader类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203467/