0
使用MVP
时,导航逻辑应该存储在哪里?它是在View
还是在Presenter
?MVP中的查看/屏幕/活动导航
说View1
(由发言人Presenter1
支持)在其视图层次结构中的某处具有按钮PushMeToGo
。所述按钮应当在按下时将用户从View1
移动到View2
。
应该在View1
内直接处理进入View2
的逻辑,还是应该通知其演示者然后执行该命令?
使用MVP
时,导航逻辑应该存储在哪里?它是在View
还是在Presenter
?MVP中的查看/屏幕/活动导航
说View1
(由发言人Presenter1
支持)在其视图层次结构中的某处具有按钮PushMeToGo
。所述按钮应当在按下时将用户从View1
移动到View2
。
应该在View1
内直接处理进入View2
的逻辑,还是应该通知其演示者然后执行该命令?
5年前问了这个问题:In MVP, who should handle navigation?。让我做点贡献。一个视图应该尽可能的不包含商业逻辑(除了直接的用户交互,或者说,动画)。因此,View1.PushMeToGo
按钮可以简单地触发事件以通知Presenter1
该按钮被按下,并且让演示者将导航请求委托给负责在视图之间导航的任何东西(让演示者尽可能干净)。 V-> P通知机制是您自己的:事件总线,简单的观察者,通过Presenter1.onPushMeToGoClicked
通知的单个处理程序也在演示者界面中定义。如果你对你的代码进行单元测试,这也可以让你测试具有虚拟视图的onPushMeToGoClicked
处理程序。