Java GWT模型视图演示器,重用演示器?或演示者-演示者通信

Java GWT模型视图演示器,重用演示器?或演示者-演示者通信,java,design-patterns,gwt,mvp,presenter,Java,Design Patterns,Gwt,Mvp,Presenter,我是新手 我刚从Ray Ryan的Google IO演讲开始,并在Google开发者网站上发表了一些文章。我没有使用任何GWT附加组件,比如GWTP、MVP4G、杜松子酒或任何其他东西。只需遵循GWT网站上的联系人示例,并尝试对我的案例进行建模 我有一个DockLayout面板,它有一个标题,左侧有一个导航树和一个中央主面板。所有这些我都在一个DefaultView中,它实现了DefaultPresenter 现在我有了一个对话框,当用户在树中执行某项操作时会弹出,分别在DialogView和D

我是新手

我刚从Ray Ryan的Google IO演讲开始,并在Google开发者网站上发表了一些文章。我没有使用任何GWT附加组件,比如GWTP、MVP4G、杜松子酒或任何其他东西。只需遵循GWT网站上的联系人示例,并尝试对我的案例进行建模

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

现在我有了一个对话框,当用户在树中执行某项操作时会弹出,分别在DialogViewDialogPresenter中建模

现在,当我隐藏对话框时,我将从AppController调用DefaultPresenter的一个新实例,该实例创建了一个新的DefaultView,我在主中央面板中的所有树选择和其他更改都消失了

  • 是否可以重复使用演示者实例,而不在历史记录更改时创建新实例?(例如,DefaultPresenter在我的例子中)
  • 在MVP模式中,是否有一种方法可以在具有持久值的演示者之间传递控件
  • 如何在事件火灾中加载app controller中演示者的现有实例
  • 还是我把整个MVP架构都搞错了?我现在计划为我的每个组件创建不同的演示者和视图,比如HeaderPresenter/HeaderView、TreePresenter/TreeView、MainContentPresenter/MainContentView?这样我就只创建我需要的演示者的新实例(如MainContentPresenter),并保持现有实例不变(如TreePresenter和HeaderPresenter)这解决了我的问题吗?我如何在浏览器窗口中缝合所有这些不同的视图?我没有使用UiBInder,只是坚持基本原则


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

    当我读到你们的问题时,我觉得答案应该是一篇文章,类似于GWT应用程序的有状态演示者体系结构。然而,这是StackOverflow,它是关于简洁性的,所以让我们看看:

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

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

    2.
    在MVP模式中,有没有一种方法可以在具有持久值的演示者之间传递控件

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

    3.
    如何在事件火灾中加载app controller中演示者的现有实例

    您的
    ActivityMapper
    实例在您的注册后就足够了。
    ActivityManager
    将依赖于您对
    ActivityMapper
    接口的
    public Activity getActivity(Place-Place)
    的实现来返回您的一个单人演示者

    资源
    完全涉及这种主/细节架构。我强烈推荐它,特别是在第18分钟之后,David开始对活动和场所进行全面概述。谢谢你的详细回答!我将尝试活动并返回!@Napster你成功完成了吗可重复使用的演示者适合您?不幸的是,否:(,我们解决了一个解决问题的快速解决方案,但我们仍在每次创建演示者(尽管不是最佳的)