Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MVP:演讲者单身_Java_Gwt_History_Mvp - Fatal编程技术网

Java MVP:演讲者单身

Java MVP:演讲者单身,java,gwt,history,mvp,Java,Gwt,History,Mvp,我在ajax web应用程序(GWT)中使用历史记录管理。当用户按下后退或前进按钮时,将显示另一个视图。每个视图只创建一次。我的问题是如何处理演示者 我认为有两种方法: 1.该视图保存所有数据,在每次历史记录更改事件后,将创建一个新的演示者。当模型需要一些数据时,演示者将要求视图提供数据并将其发送给模型。 2.演示者保存所有数据,并且在每次历史记录更改事件后,演示者将重新用于视图。因此,视图只有ui小部件,用户所做的所有更改都将重定向到演示者。 我更喜欢第二种方式,但我不确定这是否与mvp兼

我在ajax web应用程序(GWT)中使用历史记录管理。当用户按下后退或前进按钮时,将显示另一个视图。每个视图只创建一次。我的问题是如何处理演示者

我认为有两种方法:
1.该视图保存所有数据,在每次历史记录更改事件后,将创建一个新的演示者。当模型需要一些数据时,演示者将要求视图提供数据并将其发送给模型。

2.演示者保存所有数据,并且在每次历史记录更改事件后,演示者将重新用于视图。因此,视图只有ui小部件,用户所做的所有更改都将重定向到演示者。


我更喜欢第二种方式,但我不确定这是否与mvp兼容。你给我推荐什么?

如果你确保演示者是轻量级的,即或多或少没有状态(我的解释),那就不那么重要了


我更愿意将数据状态加载/保存的代码委托给从presenter调用的另一个类,并使presenter成为一个单独的类。

如果您确保presenter是轻量级的,即或多或少没有状态(我的解释),那么就不那么重要了


我更愿意将数据状态加载/保存的代码委托给从presenter调用的另一个类,并使presenter成为一个单独的类。

还有第三种方法,即presenter和view都不保存数据。该视图只包含ui小部件,是一个可重用的单例。presenter包含逻辑和本地状态,每次调用时都会创建presenter。通过在每次调用时创建它,可以确保本地状态是新鲜的


作为演示者启动的一部分,演示者所需的外部数据可以在服务器上查询,但如果需要在演示者之间传递数据,则这可能不起作用。因此,将数据存储在由应用程序维护的全局对象中,当调用presenter时,所需的特定对象通过presenter的构造函数传递给presenter。通过从演示者和视图中删除数据,您可以使其更加简单,因为演示者/视图无需管理。如果不存在,此代码还将从服务器获取数据。当用户转到某个页面时,它也会变得更加健壮,比如编辑将加载特定演示者/视图的url。通过将数据管理移出presenter/视图,您不必担心presenter/视图中的错误数据,因为应用程序将处理用户实际获得的presenter/视图,这可能与请求的页面不同,因为请求的页面对于当前的数据无效。

还有第三种方法,这不是演示者和视图保存数据的方式。该视图只包含ui小部件,是一个可重用的单例。presenter包含逻辑和本地状态,每次调用时都会创建presenter。通过在每次调用时创建它,可以确保本地状态是新鲜的

作为演示者启动的一部分,演示者所需的外部数据可以在服务器上查询,但如果需要在演示者之间传递数据,则这可能不起作用。因此,将数据存储在由应用程序维护的全局对象中,当调用presenter时,所需的特定对象通过presenter的构造函数传递给presenter。通过从演示者和视图中删除数据,您可以使其更加简单,因为演示者/视图无需管理。如果不存在,此代码还将从服务器获取数据。当用户转到某个页面时,它也会变得更加健壮,比如编辑将加载特定演示者/视图的url。通过将数据管理移出presenter/视图,您不必担心presenter/视图中的错误数据,因为应用程序将处理用户实际获得的presenter/视图,该视图可能与请求的页面不同,因为请求的页面对于当前的数据无效