在GWT中管理许多小部件

时间:2012-07-27 09:47:59

标签: gwt

假设我们在GWT应用程序中有以下小部件/面板结构 -

  • DockLayoutPanel左侧的树状菜单,用于导航到不同的应用程序。
  • DockLayoutPanel中心的面板和在此面板中加载的不同内容小部件(由导航树菜单控制。
  • 这些内容小部件是包含一个或多个小部件的合成。

处理此类应用程序的一种方法是为所有窗口小部件/面板保留单例,这意味着复合体将为所有子窗口小部件保留单例。但我觉得这是单身人士的过度使用。另一种方法是每次需要时构造新的Widget对象,但这必须是昂贵的。

围绕此最佳做法是什么?是否有任何标准模式可以解决这个问题?

1 个答案:

答案 0 :(得分:4)

  

另一种选择是每次需要时都构造新的Widget对象,但这必须是昂贵的。

你会感到惊讶。虽然Widget创建并不是免费的,但在大多数情况下,它甚至在DevMode中也相当便宜。有几个小部件在DevMode(特别是FlexTable / Grid)中创建成本很高,但是一旦编译应用程序就会大大加快。

似乎没有专门用于此的任何模式,我也不能指向任何一个大师提供最佳实践,但在我们的应用程序中,我们之前已将所有顶级小部件视为单例并且它导致给我们带来了很多问题。 (管理不同屏幕之间的状态,处理事件总线事件,未清除时屏幕上的陈旧数据)

我们只是重构了大部分需要按需创建的代码(随后在不再需要时销毁),我们获得了更简单的代码和更快的启动时间。

最后,如果您确实按需创建小部件,可能会有一些情况需要通过将这些小部件设置为单件来提高性能,但我认为您会发现只有少数人会保证这种努力。

总而言之,如果您没有尝试过,请不要假设某些事情会很慢,并且不要先预先优化您的代码。