例如,我有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
对象添加照片?)以及用它做什么(按钮点击等)?