例如,我有EditProjectFragment其中包含几个元素:
TextView(项目名称)ColorPicker(项目颜色)Spinner(项目类型)
让我们来看看:
- 项目名称会由 TextView 自己恢复
- 谁必须存储项目的颜色?
- 谁必须存储微调器的值?
似乎是ViewState他的责任。例如,当用户选择颜色时,View调用presenter.onProjectColorPicked(color). 然后,Presenter将调用view.setProjectColor(color). 还是View应该ViewState直接更新,如果不需要就不用调用Presenter?
另一个例子。用户在 EditNoteFragment 中添加照片。用户选择 photo( presenter.pickPhoto()) ->presenter.addPhoto(photo)调用并通知View将照片添加到ViewState& 显示它。应该自己View更新Note对象吗?是否应该由 Presenter 完成?在第一种情况下,这意味着ViewState将提供getNote()/setNote(note)View 将使用的类似方法。View.setNote(note)我应该通过在方法中更新它来复制 Note-reference吗?第二种情况意味着我可能应该将Note对象存储在Presenter其中并且只更新View而不传递Note它。但它看起来像一个错误的方式。
换句话说:View没有Presenter' 的帮助必须做什么(向Note对象添加照片?)以及用它做什么(按钮点击等)?