Я занимаюсь проектированием распределенной файловой системы, одним из основных классов которой является класс FileSystem, который выглядит следующим образом:
class FileSystem {
public:
exists(Path*);
insert_file(File*);
insert_block(Block*);
remove(Path*);
list();
update_file(File*);
update_block(Block*);
get_file(Path*);
get_block(Block*);
move(Path*, Path*);
copy(Path*, Path*);
...
... // More and more methods
};
Мне удалось выполнить рефакторинг проекта, однако я не могу реорганизовать этот класс, когда мне нужно добавить поведение (декоратор или подтип), что в итоге усложняет мой дизайн. Другая проблема заключается в количестве зависимостей этого класса (путь, блок, файл и другие, не включенные во фрагмент).
Основная причина в том, что у этого класса FS слишком много обязанностей, но я все еще не могу найти способ разделить этот класс файловой системы на разные классы. Интересно, есть ли какой-нибудь шаблон для такой ситуации, если нет, как бы вы справились с этим классом-гигантом?
Задача ещё не решена.
Других решений пока нет …