pok*_*oke 3 java swing lazy-loading
我使用Eclipse插件Visual Editor来构建Java Swing接口.由于我不是代码WYSIWYG(UI)编辑器生成的忠实粉丝,我想优化它,当我注意到,编辑器使用延迟加载实现所有元素,如下所示:
private JPanel getSomePanel ()
{
if ( somePanel == null )
{
somePanel = new JPanel();
// construct the panel
}
return somePanel;
}
Run Code Online (Sandbox Code Playgroud)
我知道,当不立即使用有问题的对象时,延迟加载用于获得更好的性能.然而,对于大多数用户界面而言,这没有多大意义,因为例如窗口通常应该从一开始就显示其上的所有组件.在我的情况下也是如此,我有一个相当简单的清晰布局,其中所有组件在显示窗口时都应该存在.
Visual Editor initialize在根容器的构造函数中添加了一个调用,其中构造了根面板并添加了所有其他元素(通过延迟加载).因此,实际上所有组件都是在构造根容器时创建的,只是嵌套在多个方法中.
在这种情况下,是否有任何延迟加载的用途?我应该在哪些UI情况下使用延迟加载?当使用延迟加载时,我实际上甚至允许直接访问成员变量 - 或者我应该每次都调用getter?
谢谢!
使用延迟加载时,每次访问成员变量时都应始终使用getter.这是延迟加载的基本部分.
但是,在您描述的这种情况下,没有理由使用延迟加载.我不得不怀疑Visual Editor的作者是否有一些懒惰加载的东西,他觉得它总是需要被使用,或者只是决定他想在工具中使用它有一些任意的原因.
在构建面板时,组件通常全部都被加载,因为它们都是可见的,所以你是完全正确的UI.在某些情况下,面板的某些部分可能会根据面板上的其他选项出现和消失,并且可以想象在这些情况下可以使用延迟加载.然而,我的观点是,人们可能无论如何都会点击界面并使用所有不同的标签和选项,因此您不妨开始加载所有内容.
显然,当您谈论加载数据时会发生一些不同的事情.如果您在面板出现时隐藏了一个下拉列表,并且在加载时有很多信息,您可能不想加载下拉列表,直到它变得可见.我仍然认为没有理由不立即实例化下拉列表,尽管它是隐藏的.
我不会认为延迟加载是面板的标准行为.我无法提供Visual Editor选择以这种方式生成代码的原因.