我有一个负责控制屏幕导航的对象。演示者可以在此导航器对象NavigateTo(字符串screenName)和NavigateTo(字符串screenName,对象数据)上调用两种方法之一。后一种方法允许将一些上下文数据传递给导航器对象。
调用NavigateTo(字符串screenName,对象数据)将调用演示者作为数据传递给导航器然后允许导航器对象使用它从视图和/或模型中提取数据时,这是不正确的方法
非常感谢有关此事的一些建议。
答案 0 :(得分:0)
将Presenter传递给NavigateTo是一个不错的选择。如果您有多个演示者,则可能需要编写NavigateTo可以使用的接口,并让每个演示者实现该接口。但是如果您只是为此使用一个演示者,或者他们已经共享一些通用接口,则不需要这样做。
MVP背后的一个想法是,您在不影响底层UI逻辑的情况下更改视图。传递演示者不会影响MVP的这个目标,因为您可以更改Presenter正在使用的视图。现在,如果您允许通过演示者直接访问原始视图(通过公开视图属性),那么这不是很好。您想要的是演示者将方法公开所需信息给NavigateTo的方法。这样,当您有机会查看视图时,您将重新实现这些方法背后的代码。