我说有一个与Instagram类似的应用。有一个名为ItemView
的视图,它显示有关项目的详细信息。在此视图中,有一个按钮可以保存项目以供以后使用。完全像Instagram。
我有两个视图模型。 ItemViewModel
用于ItemView,另一个名为UserViewModel
class ItemViewModel: ObservableObject {
@Published var item: Item
init(item: Item) {
self.item = item
}
// here?
func saveItem() {
//
}
}
class UserViewModel: ObservableObject {
@Published var savedItems: [SavedItem] = []
@Published var item: Item
init(item: Item) {
self.item = item
}
// or here?
func saveItem(item: Item) {
//
}
}
所有已保存项目的数组,因为它们属于用户,所以保存在UserViewModel
中。
问题是saveItem()
的此功能是否属于ItemViewModel
,因为此按钮位于ItemView
中,还是属于UserViewModel
,因为此按钮特定于用户并且用户可以保存项目?哪个viewModel更适合?
如果saveItems属于用户,则用户有责任对此进行处理,因此saveItem()属于UserViewModel。