Назад к задачам
Junior — Senior
6

Разделение контракта файловой системы для повышения расширяемости

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Необходимо проанализировать существующий контракт IFileHandler. Как можно разбить его на более узкоспециализированные интерфейсы, чтобы улучшить масштабируемость и удовлетворить принцип единственной ответственности (SRP)?

class IFileHandler {
public:
    virtual void open(std::string path) = 0;
    virtual void close() = 0;
    virtual std::vector<std::string> readLines() = 0;
    virtual void writeLines(const std::vector<std::string>& data) = 0;
    virtual ~IFileHandler() {}
};

class MyFile : public IFileHandler {
    void open(std::string path) override;
    void close() override;
    std::vector<std::string> readLines() override;
    void writeLines(const std::vector<std::string>& data) override;
};