Junior — Senior
Splitting the filesystem contract for increased extensibility
livecode
Task condition
It is necessary to analyze the existing IFileHandler contract. How can it be broken down into more specialized interfaces to improve scalability and satisfy the Single Responsibility Principle (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;
};