Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
9
Расширение архитектуры: поддержка источников помимо файлов
Условие задачи
В текущей системе определены два абстрактных интерфейса — IConnection и IFile. Они позволяют работать с файловыми ресурсами, но их можно использовать и для доступа к другим типам хранилищ. Подумайте, какой новый класс стоит добавить в эту иерархию, чтобы расширить возможности без изменения уже существующего кода.
Определите, какие дополнительные источники данных (например, базы данных, сетевые потоки, облачные хранилища) логично будет подключать, реализуя те же интерфейсы IConnection и IFile. Такое решение покажет, насколько гибко построена архитектура и как легко её можно адаптировать к новым требованиям.
class IConnection {
public:
virtual void connect(std::string) = 0;
virtual void disconnect() = 0;
virtual ~IConnection() {}
};
class IFile {
public:
virtual std::vector<std::string> Read() = 0;
virtual void Write(std::vector<std::string>) = 0;
virtual ~IFile() {}
};
class OurFile : public IConnection, public IFile {
void connect(std::string);
void disconnect();
std::vector<std::string> Read();
void Write(std::vector<std::string>);
};