视图应该对模型了解多少?
我正在使用WPF和DAG支持的python包装器在python中构建应用程序。目前,我必须决定在数据和视图之间进行交互的一致方式。 据我所知,目前有两种明显的解决方案。 第一个类似于Android应用程序的结构。您有一个设置/填充视图的控制器。因此,控制器拥有该视图并仅推送将要显示的原始数据。视图只是一个愚蠢的层,不知道发生了什么以及数据来自何处。然后,如果用户与视图交互,它将向控制器发送回调(如果已注册)。 UserInfoController.py userInfoView = UserInfoView() userInfoView.onGenderChangedCallback = self.onGenderChangedCallback userInfoView.setUserGenderValue(user.getGender()) UserInfoView.py def setUserGenderValue(self, gender): self.userGender = gender def getView(self): return ui.Label(self.userGender, onEditCallback=self.onGenderChangedCallback) 第二个方法是将(引用)模型传递给视图,并让视图检索和更新数据。视图现在包含模型,因此它可以更新模型而无需对控制器进行任何其他回调。 UserInfoViewModel.py self.gender = 'Male' UserInfoView.py def getView(self): return ui.Label(self.ViewModel().getGender(), onEdited=self.genderEdited) def genderEdited(self, newValue): self.ViewModel().setGender(newValue) 所以我想我要问的是,我应该传递非常原始的数据并保持视图尽可能通用,然后使用回调并在控制器中处理业务细节。 还是应该将整个模型传递给视图,然后让视图直接更新模型。这意味着将要键入的代码更少。 PS。不要判断代码-只是为了可视化。 编辑: 另外要补充 -此应用程序将使用支持鸭型的python编写。这意味着使用第二种方法,只要模型满足所需的接口,视图仍然可以重用。