GWT模型查看演示者,重用演示者?或演示者 - 演示者沟通

时间:2012-07-06 05:48:54

标签: java design-patterns gwt mvp presenter

这里的菜鸟。

我刚开始使用Ray Ryan的Google IO谈话,并关注Google Developers网站上的一些文章。我没有使用任何GWT附加组件,如GWTP或MVP4G或GIN或任何其他东西。刚刚关注GWT网站上的联系人示例,并尝试对我的案例进行建模。

我有一个 DockLayout 面板,它有一个标题,左边是导航树,还有一个中央主面板。所有这些都在一个 DefaultView 中实现 DefaultPresenter

现在我有了一个 DialogBox ,当用户在树中执行某些操作时会弹出 DialogBox ,它分别在 DialogView DialogPresenter 中建模。

现在,当我隐藏 DialogBox 时,我最终会从 AppController 调用 DefaultPresenter 的新实例,这样做会创建一个< strong> new DefaultView ,主中央面板中的所有树选择和其他更改都消失了。

  1. 是否可以重新使用演示者的实例,而无需在历史记录更改中创建新的演示者? (例如, DefaultPresenter 在我的情况下)
  2. MVP模式中是否有一种方法可以在持久化值的演示者之间传递控件?
  3. 如何在事件触发时在app控制器内加载演示者的现有实例?
  4. 或者我的整个MVP架构有问题吗?我现在计划为每个组件设置不同的演示者和视图说 HeaderPresenter / HeaderView,TreePresenter / TreeView,MainContentPresenter / MainContentView ?这样我只会创建我需要的演示者的新实例(如 MainContentPresenter )并保持现有的(如 TreePresenter和HeaderPresenter )这是否解决了我的问题?如何在浏览器窗口中拼接所有这些不同的视图? 我没有使用UiBInder ,只是坚持基础。

    帮助我所有的专家,我陷入僵局!

1 个答案:

答案 0 :(得分:2)

当我阅读你的问题时,感觉答案应该是一篇文章,类似于 GWT Apps的状态演示者架构。这是StackOverflow,但这完全是为了简洁,所以让我们看看:

答案

  

1.是否可以重新使用演示者的实例,而无需在历史记录更改中创建新的演示者?

当然。没有什么能阻止您在注入视图的一堆单例演示者之间切换(切换将在ActivityMapper的实现中发生)。 注意以后假设您的演示者是Activities

  

2. MVP模式中有没有办法在持久化值的演示者之间传递控件?

由于您的演示者现在是单身人士,他们将保留其成员变量的状态。对于演示者之间的消息交换,事件和EventBus是您的朋友。

  

3.如何在事件触发时在app控制器中加载演示者的现有实例?

您的ActivityMapper个实例,一旦在ActivityManager注册,就足够了。 ActivityManager将依赖于public Activity getActivity(Place place) ActivityMapper接口的{{1}}实现,以返回您的一个单身演示者。

资源

David Chandler's Google I/O 2011 GWT session触及了这种类型的主/细节架构。我强烈推荐这个问题,特别是第18分钟之后,大卫开始全面了解活动和地点的部分。