Rust相当于战略工厂的存储库

时间:2017-07-03 08:37:44

标签: design-patterns rust

在C ++中,处理设计需要读取多种文件格式的程序的一种方法是策略工厂的存储库。通常,Repository部分是Singleton。工厂负责构建处理文件格式的策略。此外,可以通过静态初始化来填充存储库,这样每个工厂都可以在执行main()之前将自己注册到存储库。

我很难看到如何在Rust中实现类似的系统,没有 Singleton组件。我希望能够将Factories注册到某种文件阅读器存储库,理想情况是在静态初始化时,为其他模块或插件添加选项,以便能够在运行时添加自己的文件阅读器。

我正在寻找的是Rust这样的东西(简化版):

class Repo : boost::non_copyable {
public:
    static Repo& instance();
    void registerFactory(std::unique_ptr<FileFactory> factory, std::string extension);
};

template<class T>
class Factory {
public:
    std::unique_ptr<T> build(std::string path) { return std::make_unique<T>(path); }
}

class AudioFile {
public:
    AudioFile(std::string path);
}

0 个答案:

没有答案
相关问题