MVP倍数视图组合形成整体视图

时间:2013-02-11 16:51:06

标签: java gwt mvp

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

在这些相当简单的视图中,仅仅view在一个单独的类(view)中填充所有小部件并没有太大的损失。但是对于复杂的view,您可以为组件创建单独的view(每个此类组件presenter都有相应的view),然后合并view进入整体view s(此合并view可能有也可能没有单独的合并presenter,因为所有子视图已经有相应的presenters)。有点类似于在单独的类中创建单独的小部件,这些小部件扩展Composite,在其上调用initWidget,并在主面板中使用它们,如mainPanel.add(new subPanel())

那么可以在MVP中以GWT模式进行此类操作吗?

1 个答案:

答案 0 :(得分:1)

不,如果你一次性完成整个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扩展到PanelWidget的位置。因此,类中的所有元素都添加到mainMenuPanel

MyheaderClass课程中,您可以使用labels添加buttonsthis.add(mybutton) ...等等。