繁体   English   中英

MVP:Presenter Singleton

[英]MVP: Presenter Singleton

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

我认为有两种方法:
1.视图保存所有数据,每次历史更改事件后,都会创建一个新的演示者。 当模型需要一些数据时,演示者会询问视图数据并将其发送到模型。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM