如果方法使用不重叠,2 Activity 是否应该有单独的 ViewModel?
Should 2 Activity's have separate ViewModels if the method usages don't overlap?
我有 1 Activity
,仅 显示,删除 Notes
来自 RecyclerView
。
我有另一个 Activity
仅 添加 和 更新 新项目。
目前他们都使用相同的 ViewModel
class:
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
一个?
这取决于您是要更简单的可维护性还是更清晰的关注点分离。
两个活动都使用一个 ViewModel 并没有错,但是考虑到 ViewModel 应该 model view。
在 ViewModel 中有一些函数没有被 Activity A 使用,而其他函数没有被 Activity B 使用,这并不符合 ViewModel 应该是一个View.
功能模型
我的建议是两个单独的 ViewModel。
我有 1 Activity
,仅 显示,删除 Notes
来自 RecyclerView
。
我有另一个 Activity
仅 添加 和 更新 新项目。
目前他们都使用相同的 ViewModel
class:
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
一个?
这取决于您是要更简单的可维护性还是更清晰的关注点分离。
两个活动都使用一个 ViewModel 并没有错,但是考虑到 ViewModel 应该 model view。
在 ViewModel 中有一些函数没有被 Activity A 使用,而其他函数没有被 Activity B 使用,这并不符合 ViewModel 应该是一个View.
我的建议是两个单独的 ViewModel。