据我所知,当我们使用MVP时,我们将所有的展示逻辑移动到Presenter中。但我们不想让Presenter知道视图实现的细节,那么在应用程序中如何导航到另一个屏幕呢?你是如何管理应用程序流程的呢?
据我所知,当我们使用MVP时,我们将所有的展示逻辑移动到Presenter中。但我们不想让Presenter知道视图实现的细节,那么在应用程序中如何导航到另一个屏幕呢?你是如何管理应用程序流程的呢?
使用一些导航器接口,例如:
interface INavigator
{
void MoveTo (string screenName);
void MoveTo (string screenName, NavigationParameters parameters);
}
这是视图上的一个方法。例如,您可以有一个抽象方法,如ShowCustomerForm(),在WinForms中的实现将是CustomerForm.Show(或WinForms中的其他名称),而在WebForms中则是Response.Redirect(CustomerForm.aspx)。
我假设您指的是另一个具有自己的MVP-pair的屏幕?
今天早上我正在考虑这种情况,我的解决方案可能是有一个Coordinator知道需要打开的Presenter和MVP-pair。该Coordinator打开新的presenter+view,并在完成后可选择调用第一个presenter的方法以获取结果。
这样,第一个MVP不必了解新屏幕的任何信息,他们只会发出事件。打开第二个窗口并进行通信的逻辑完全包含在Coordinator中。