Архитектурные недостатки класса IOManager

IOManager объединяет разные механизмы хранения и растёт при добавлении каждого нового источника. Полезно отделить бизнес-операции от файлового, сетевого и базового ввода-вывода.

Короткий ответ

Что ответить на собеседовании

IOManager объединяет разные механизмы хранения и растёт при добавлении каждого нового источника. Полезно отделить бизнес-операции от файлового, сетевого и базового ввода-вывода.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какие проектные проблемы содержатся в следующем фрагменте кода.

class IOManager {
public:
    void SaveToFile(const std::string& path);
    void ReadFromFile(const std::string& path);

    void SaveToDB(const std::string& endpoint);
    void ReadFromDB(const std::string& endpoint);

    void SaveToServer(const std::string& endpoint);
    void ReadFromServer(const std::string& endpoint);
};

Ответ

IOManager объединяет разные механизмы хранения и растёт при добавлении каждого нового источника. Полезно отделить бизнес-операции от файлового, сетевого и базового ввода-вывода.

Выделите небольшие интерфейсы чтения и записи, если их семантика действительно общая, и реализации для конкретных источников. Клиент получает нужную зависимость через конструктор; выбор реализации остаётся в точке сборки приложения.

Однако само количество методов ещё не доказывает плохой дизайн: класс может быть осознанным фасадом. Проблемой становятся смешанные обязанности, неясный формат данных, ошибки и необходимость менять клиента при каждом новом хранилище.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее