В mvvm представление никогда не может получить доступ к модели.
Я определяю «Просмотр состава модели» как концепцию, в которой модель представления может иметь от 1 до многих дочерних моделей представления
Если родительская модель представления должна мутировать модель 1 из своих дочерних моделей представления, то, если представление имеет доступ к этой модели представления, оно по сути имеет доступ для изменения моделей дочернего виртуального компьютера.
Какой подход можно использовать для применения правила «модель никогда не обращается к модели»?
Пример кода в Swift
class BigVm{
let accountVm: AccountViewModel
let anotherVm: AnotherSubviewViewModel
private func someEventHappened(){
//some logic that mutates accountVm's model based on state of anotherVm and vise versa
accountVm.mutateOrAccessModel()
}
}
class BigViewController: UIViewController{
let viewModel: BigVm
let subviewAccount: AccountView //has a viewModel of AccountViewModel
let anotherSubview: AnotherSubview //has a viewModel of AnotherSubviewViewModel
func viewDidLoad(){
super.viewDidLoad()
subviewAccount.vm = viewModel.accountVm
anotherSubview.vm = viewModel.anotherVm
//now what stops BigViewController to do the next lines
viewModel.subViewAccount.mutateOrAccessModel()
}
}