Должны ли 2 Activity иметь отдельные ViewModels, если методы использования не перекрываются? - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть 1 Activity, который только отображает , а удаляет Notes из RecyclerView.У меня есть еще один Activity, который только добавляет и обновления новых предметов.

На данный момент они оба используют один и тот же класс ViewModel:

public class NoteViewModel extends AndroidViewModel {
    private NoteRepository repository;
    private LiveData<List<Note>> allNotes;

    public NoteViewModel(@NonNull Application application) {
        super(application);
        repository = new NoteRepository(application);
        allNotes = repository.getAllNotes();
    }

    public void insert(Note note) {
        repository.insert(note);
    }

    public void update(Note note) {
        repository.update(note);
    }

    public void delete(Note note) {
        repository.delete(note);
    }

    public void deleteAllNotes() {
        repository.deleteAllNotes();
    }

    public LiveData<List<Note>> getAllNotes() {
        return allNotes;
    }
}

Должен ли я вместо этого создать 2 отдельных ViewModels, по одному для каждого Activity?

1 Ответ

0 голосов
/ 18 января 2019

Это зависит от того, собираетесь ли вы на упростить поддержку или для более четкого разделения интересов .

Нет ничего плохого в том, чтобы иметь одну ViewModel для обеих операций,но учтите, что ViewModel должен модель представление .
Наличие некоторых функций в ViewModel, которые не используются в Activity A, и других функций, не используемых в Activity B, не совсем соответствует идее, что ViewModel должна быть моделью функциональности View..

Моя рекомендация будет состоять из двух отдельных ViewModel.

...