懒惰初始化与GUI中的急切初始化

时间:2016-01-04 17:12:51

标签: java user-interface initialization instantiation

我只是想知道在框架中创建组件时应该使用哪种类型的初始化。

我们说我的框架包含几个按钮:

public class MainFrame extends JFrame {
    private JTextField dynamicText; // accessible

    public MainFrame() {
        initComponents()
    }

    private void initComponents() {
        dynamicText = getText();
        JButton open = createButton();
        JButton close = createButton();
        close.setEnabled(false);

        add(open);
        add(close);

        setVisible(true);
    }

    private JButton createButton() {
        JButton button = new JButton();
        // some customizations, like size, icons etc.
        return button;
    }

    private JTextField getText() {
        if (this.dynamicText== null) {
            this.dynamicText= new JTextField();
            // some customization
        }
        return this.dynamicText;
    }

    public void updateText() {
        // code to update dynamicText
    }
}

这是一个很好的方法吗?

2 个答案:

答案 0 :(得分:1)

您需要考虑以下因素来确定最适合使用的策略:

  • 如果初始化过程需要很长时间,您可以在使用它之前异步初始化它
  • 如果很少使用JFrame,您可以考虑按需初始化它
  • 如果JFrame是动态的,则按需初始化
  • 使用热切的方法创建更易读的代码
  • 如果JFrame不太重并经常使用,请使用急切的方法

答案 1 :(得分:1)

选择取决于您的显示要求和初始化延迟。为了获得最佳用户体验,一般建议考虑对需要时间填充或在显示中不立即需要的组件进行延迟初始化。否则,为了简单起见,坚持热切的初始化。