У меня есть большой класс «Менеджер», который, я думаю, делает слишком много, но я не уверен, как разделить его на более логичные единицы.
Вообще говоря, класс в основном состоит из следующих методов:
class FooBarManager
{
GetFooEntities();
AddFooEntity(..);
UpdateFooEntity(..);
SubmitFooEntity(..);
GetFooTypes();
GetBarEntities();
}
Класс Manager является частью моей бизнес-логики и содержит экземпляр другого класса "Manager" на уровне доступа к данным, который содержит все операции CRUD для всех объектов.
У меня есть разные сущности, поступающие со слоя доступа к данным, и поэтому у меня есть преобразователь вне класса Manager для преобразования сущностей данных в бизнес-сущности.
Причиной для классов менеджера было то, что я хотел иметь возможность смоделировать каждый из классов "Менеджера", когда я выполняю тестирование модулей. Каждый из классов менеджера теперь более 1000 loc и содержит 40-50 методов каждый. Я считаю их довольно раздутыми, и мне неудобно помещать всю логику доступа к данным в один класс. Что я должен делать по-другому?
Как мне их разделить, и есть ли какой-то конкретный шаблон дизайна, который я должен использовать?