2

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

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

处理此类应用程序的一种方法是为所有小部件/面板保留单例,这意味着组合将为其所有子小部件保留单例。但我觉得这是对单例的过度使用。另一种选择是在每次需要时构造新的 Widget 对象,但这一定很昂贵。

这方面的最佳实践是什么?是否有任何标准模式可以解决这个问题?

4

1 回答 1

4

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

你会感到惊讶。虽然 Widget 创建不是免费的,但在大多数情况下,它非常便宜,即使在 DevMode 中也是如此。在 DevMode 中创建一些小部件的成本很高(特别是 FlexTable/Grid),但是一旦你编译了应用程序,这些小部件的速度就会大大加快。

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

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

最后,如果您确实按需创建小部件,在某些情况下您可能需要通过将这些小部件设置为单例来提高性能,但我认为您会发现只有少数情况值得付出努力。

总而言之,不要以为没有尝试过就会很慢,也不要抢先优化你的代码。

于 2012-07-27T13:20:34.823 回答