GWT组合模式最佳实践

8
我正在学习GWT,并且已经开始逐渐掌握它。我到了代码变得混乱的地步,所以我回过头来将一些合理的部分作为组合体进行因式分解。我遇到的第一个问题是,我的工具支持未能给新的Composite类提供initWidget()方法。它包括一个默认构造函数。
目前,我只需在重写的initWidget()方法中填入一个对super(initWidget(w))的调用即可。我的项目编译和运行都符合预期,但我觉得我可能漏掉了什么。

当覆盖init时,我需要记住什么,如果需要,在构造函数中放置什么?还有其他需要知道的吗,或者这只是普通的Java问题?

澄清 - 我意识到,根据您是否打算将所述Composite类作为库的一部分发布还是仅作为独立应用程序的一部分发布,可能会有不同的答案。特别是因为我在这个特定技术方面非常新手,所以我目前没有开发外部有用的组件的打算。

谢谢!

2个回答

7

我不确定我是否理解你想做什么。但是对于我编写的所有复合组件,我从未重写过initWidget方法。因为Composite本身不需要用构造函数初始化,也就是不需要调用super()方法。我的扩展Composite的小部件的构造函数看起来像这样:

public mywidget() {
  SomePanel p = new SomePanel();
  ....
  initWidget(p);
}

作为最佳实践,我认为只有继承自Composite的小部件才应该调用它自己的initWidget方法。

我认为这可能是解决我所有关于自定义小部件的问题的答案。我也遇到了一种情况,即GUI工具无法渲染我的许多自定义小部件,很可能是因为我的构造函数或初始化调用都不正确。我回家后会检查一下...谢谢。 - Brian Sweeney

2
"GWT Conference: Best Practices for Building Libraries"提供了一些提示。您还应该查看GWT的源代码以及GWT库之一(例如gwt-ext)的源代码。
[编辑]我刚看到另一个选择:suco。从描述中可以看出:

这是一个微型库,有助于保持您的GWT客户端代码清洁和模块化。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接