Я создаю простое приложение со списком задач на android, потому что хочу познакомиться с чистой архитектурой. Я наложил на приложение слой домена, данных и уровня представления, и вот следующий пример: https://github.com/android10/Android-CleanArchitecture
Когда я попытался выяснить, что такое домен для этого приложения Я спросил себя «о чем это приложение?». На что я отвечаю: «Речь идет о том, чтобы позволить пользователю создать группу и создавать задачи в этой группе», очень просто,
Поэтому я создал следующее:
Добавление групп в базу данных Room
public class AddGroupItemUseCase extends AbstractUseCaseCompletable<AddGroupItemUseCase.Params> {
private final GroupItemRepository mGroupItemRepository;
public AddGroupItemUseCase(GroupItemRepository repository,
PostExecutionThread postExecutionThread,
ThreadExecution threadExecution) {
super(threadExecution, postExecutionThread);
mGroupItemRepository = repository;
}
@Override
public Completable buildUseCaseCompletable(Params params) {
return mGroupItemRepository.addItemToGroup(params.mItem);
}
public static final class Params {
private final Item mItem;
private Params(Item item) {
mItem = item;
}
public static Params itemToBeAdded(Item item) {
return new Params(item);
}
}
}
Добавление задач в группу в базе данных Room:
public class AddGroupUseCase extends AbstractUseCaseCompletable<AddGroupUseCase.Params> {
private final GroupRepository mGroupRepository;
public AddGroupUseCase(ThreadExecution threadExecution,
PostExecutionThread postExecutionThread,
GroupRepository repository) {
super(threadExecution, postExecutionThread);
mGroupRepository = repository;
}
@Override
public Completable buildUseCaseCompletable(Params params) {
return mGroupRepository.addGroup(params.mGroup);
}
public static final class Params {
private final Group mGroup;
private Params(Group group) {
mGroup = group;
}
public static AddGroupUseCase.Params groupToAdd(Group group) {
return new AddGroupUseCase.Params(group);
}
}
}
Итак, возникает очевидный вопрос, нужно ли создавать эти классы одного класса one-method за каждую грубую операцию? Например, что, если я хочу узнать, сколько задач в группе? я должен создать класс с этим методом, чтобы соответствовать чистой архитектуре? кажется, что нужно создать много классов, но я думаю, что это имеет смысл из-за SRP, но тогда у вас будет много «функциональных классов», с которыми вам нужно поспевать,
есть мысли? спасибо!