java - GWT 模型 View 演示器,重用演示器?或演示者 - 演示者沟通

标签 java design-patterns gwt mvp presenter

这里是新人。

我刚刚从 Ray Ryan 的 Google IO 演讲开始,并关注了 Google 开发者网站上的一些文章。我没有使用任何 GWT 附加组件,如 GWTP、MVP4G、GIN 或任何其他东西。只是按照 GWT 网站上的联系人示例并尝试对我的案例进行建模。

我有一个 DockLayout 面板,它有一个标题、左侧的导航树和一个中央主面板。所有这些我都在一个实现 DefaultPresenterDefaultView 中。

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

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

  1. 是否可以重复使用演示者的实例,而无需在历史记录更改时创建新的实例? (例如,在我的例子中,DefaultPresenter)
  2. 在 MVP 模式中是否有一种方法可以在演示者之间传递控制并保持值持久?
  3. 如何在事件触发时加载应用 Controller 内演示者的现有实例?

或者我把整个 MVP 架构搞错了?我现在计划为每个组件设置不同的演示者和 View ,比如 HeaderPresenter/HeaderView、TreePresenter/TreeView、MainContentPresenter/MainContentView ?这样我只会创建我需要的演示者的新实例(例如MainContentPresenter )并保留现有的(例如 TreePresenter 和 HeaderPresenter),这可以解决我的问题吗?我如何在浏览器窗口中拼接所有这些不同的 View ? 我没有使用 UiBInder,只是坚持基础知识。

请各位专家帮帮我,我陷入了僵局!

最佳答案

当我读到你的问题时,感觉答案应该是一篇文章,类似于GWT 应用程序的状态演示者架构。然而,这是 StackOverflow,一切都是为了简洁,所以让我们看看:

答案

1. Is it possible to re use instances of presenters without creating a new one on history change?

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

2. Is there a way in MVP pattern to pass controls between presenters with values persisting ?

由于您的演示者现在是单例,因此它们将保留其成员变量的状态。用于演示者、 Activity 和 EventBus 之间的消息交换是你的 friend 。

3. How to load a existing instance of a presenter inside app controller on an event fire ?

您的 ActivityMapper 实例,一旦注册到您的ActivityManager ,应该足够了。 ActivityManager 将依赖于您对 ActivityMapper 接口(interface)的 public Activity getActivity(Place place) 的实现来返回您的单例演示者之一。

资源

David Chandler's Google I/O 2011 GWT session正是涉及这种类型的主/细节架构。总的来说,我强烈推荐它,对于这个问题,特别是第 18 分钟之后的部分,当时 David 开始全面概述 Activity 和地点。

关于java - GWT 模型 View 演示器,重用演示器?或演示者 - 演示者沟通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11356540/

相关文章:

java - Java中如何将一个JList中的元素转移到另一个JList中?

Java 将 UTF-8 输出为真实字符?

java - 是否可以包含两个不同的java包并使用它们的API?

c# - 枚举组合的设计模式(方法参数)

java - GWT - 方法的同步返回

Java - 如何通过 HttpUrlConnection 发送表单数据或 www-form-urlencoded 数据

design-patterns - 观察者模式 - 单一数据点与大数据集

java - GWT 弹出面板是透明的?

java - smart gwt 5.0 小部件 + GWT 2.7.0 在 superdev 模式下不显示

php - 使整个网站的页眉、侧边栏和页脚保持不变