2015-08-16 146 views
0

使用MVP时,导航逻辑应该存储在哪里?它是在View还是在PresenterMVP中的查看/屏幕/活动导航

View1(由发言人Presenter1支持)在其视图层次结构中的某处具有按钮PushMeToGo。所述按钮应当在按下时将用户从View1移动到View2

应该在View1内直接处理进入View2的逻辑,还是应该通知其演示者然后执行该命令?

回答

0

5年前问了这个问题:In MVP, who should handle navigation?。让我做点贡献。一个视图应该尽可能的不包含商业逻辑(除了直接的用户交互,或者说,动画)。因此,View1.PushMeToGo按钮可以简单地触发事件以通知Presenter1该按钮被按下,并且让演示者将导航请求委托给负责在视图之间导航的任何东西(让演示者尽可能干净)。 V-> P通知机制是您自己的:事件总线,简单的观察者,通过Presenter1.onPushMeToGoClicked通知的单个处理程序也在演示者界面中定义。如果你对你的代码进行单元测试,这也可以让你测试具有虚拟视图的onPushMeToGoClicked处理程序。