MVP中的视图/屏幕/活动导航

时间:2015-08-16 07:08:37

标签: mvp

使用MVP时,应该在哪里存储导航逻辑?是View还是Presenter

Say View1(由演示者Presenter1支持)在其视图层次结构中的某个位置有一个按钮PushMeToGo。按下时,所述按钮应将用户从View1移动到View2

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

1 个答案:

答案 0 :(得分:0)

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