Java MVP将多个视图组合成一个整体视图

Java MVP将多个视图组合成一个整体视图,java,gwt,mvp,Java,Gwt,Mvp,GWT文档附带了一个关于如何利用MVP模式的教程。在本例中,有两个视图,每个视图根据用户操作替换另一个视图 在这些相当简单的视图中,只将视图中的所有小部件塞进一个类(视图)并不会造成太大的伤害。但对于复杂的视图,我们希望为组件创建单独的视图(为每个这样的组件视图创建相应的演示者),然后将这些视图组合到整体视图中(此组合的视图可能有也可能没有单独的组合的演示者,因为所有子视图都已经有相应的演示者)。类似于在扩展Composite的单独类中创建单个小部件,对它们调用initWidget,并像main

GWT
文档附带了一个关于如何利用
MVP
模式的教程。在本例中,有两个视图,每个视图根据用户操作替换另一个视图

在这些相当简单的视图中,只将
视图
中的所有小部件塞进一个类(
视图
)并不会造成太大的伤害。但对于复杂的
视图
,我们希望为组件创建单独的
视图
(为每个这样的组件
视图
创建相应的
演示者
),然后将这些
视图
组合到整体
视图中(此组合的
视图
可能有也可能没有单独的组合的
演示者
,因为所有子视图都已经有相应的
演示者
)。类似于在扩展
Composite
的单独类中创建单个小部件,对它们调用
initWidget
,并像
mainPanel一样使用它们。在主面板中添加(new subPanel())


因此,在
GWT
中的
MVP
模式中是否可以执行此操作?

否,如果您这样做,则整个
DOM
在一次快照中加载,即使您将
if-else
条件放入其中

使用
GWT
构建大型应用程序时,必须使用MVP和代码拆分,否则, 整个应用程序(即JavaScript捆绑包)在初始版本的一个块中下载 加载应用程序,这对于沮丧的用户来说是一个好方法

通过使用标准MVP,您可以

Isolate of User Interface from Business tier

Easily interchangeable Views (user interfaces)

Ability to test all code more effectively 
我想你的期望值如下

public class MainPageView extends ViewImpl implements MainPagePresenter.MyView {


    @UiField
    public HTMLPanel mainMenuPanel;

    @UiField
    public HTMLPanel mainContentPanel;

    @UiField
    public HTMLPanel mainFooterPanel;

.
.
.
.
.etc
是的,您也可以使用内部有一些元素的类,而不是上面所示的面板

更新:

mainMenuPanel
,您可以像mainMenuPanel.add(new MyheaderClass())一样添加类。 其中,
MyheaderClass
扩展了
Panel
Widget
。这样类中的所有元素都会添加到
mainMenuPanel


在您的
MyheaderClass
类中,您可以使用
this.add(mybutton)添加
标签
按钮
…等
.etc

你能详细说明一下吗?我的意思是,文档非常稀少,所以一个工作示例会很好…很抱歉给你带来希望并把它拿走。我知道这是可以做到的。我几年前在另一家雇主做过。我没有访问代码来查看我是如何做到的,我不记得细节。这里还有一点。Th整个屏幕上的e init在每个子屏幕上调用init。我想我有一个主演示者,可以将详细信息汇集在一起,并提供对bits的统一访问。没问题,谢谢!我没有完全理解你。想象一下,我的项目目前不符合MVP,但我想这样做。它分为三个面板,顶部、中间和底部这三个面板在单独的类中定义(我通过调用
initWidget
来调用它)。这些类本身包含多个其他小部件,这些小部件也在单独的类中定义,并且这些级联可以进行相当多的级别。因此,代替在单个类中定义的面板或小部件,我可以将它们替换为视图和另一个相应的presenter类吗?是的,您可以毫不犹豫地使用。您能给我一个示例吗n知道怎么做吗?我理解你想说的。我对小部件也做了同样的事情。在单个类中声明小部件,并对它们调用
initWidget
,然后将它们添加到父面板中,如
parentPanel.add(new subPanel())
parentpanel
本身可能是一个子面板,因此在调用
initWidget
之后,也可以将其添加到其父面板,如
headPanel.add(new parentpanel())
。但是现在我们有了视图来代替面板。这些面板包含同一类中的事件,这里的视图只包含小部件,事件被外包给它的演示者。现在如何添加?我的意思是,类似这样的东西。有一个名为
subView1'的视图绑定到演示者
subViewPresenter1
。类似于r
subView2`和
subView3
。我现在想添加这三个视图,即父视图
nestedViews
。此视图只是一个容器,它不需要另外有一个演示者,因为所有子视图都有演示者来处理其事件。我现在如何将这三个子视图添加到此父视图中?