#pragma once #include #include #include #include "FileStrategy.h" using FactoryMap = std::map; class FileReader { public: static std::unique_ptr open(const std::string url); private: FileReader() = default; virtual ~FileReader() = default; private: static void register_strategy(const std::string type, const FileStrategy * node); static FactoryMap & get_map(); static const FileStrategy * find_reader(const std::string type); private: friend FileStrategy; };