2016-01-04 1 views
0

Мне просто интересно, какой тип инициализации я должен использовать при создании компонентов в фрейме.Ленивая инициализация против нетерпеливой инициализации в GUI

Скажем, у меня есть кадр, который содержит несколько кнопок:

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 
    } 
} 

Это хороший способ сделать это?

+1

Я не вижу смысла делать это таким образом. Компоненты все еще будут инициализированы, как только объект будет создан, поэтому вы ничего не получите от этого. – resueman

+0

Мне просто интересно, какой из них делает код более удобочитаемым и проще отлаживать, на всякий случай. – PuggyLongLegs

ответ

1

Выбор зависит от ваших требований к дисплею и задержки инициализации. Чтобы получить наилучший пользовательский опыт, общая рекомендация состояла бы в том, чтобы рассмотреть ленивую инициализацию для компонентов, требующих времени для заполнения или не требующихся на дисплее. В противном случае для простоты придерживайтесь желаемой инициализации.

1

Вы должны принять во внимание следующий фактор, чтобы решить, какую стратегию лучше использовать:

  • Если процесс инициализации занимает много времени, вы можете инициализировать его в асинхронном режиме, прежде чем использовать его
  • Если JFrame редко используется вы можете рассмотреть, чтобы инициализировать его по требованию
  • Если JFrame является динамической инициализации по требованию
  • для создания более читаемом использовать код нетерпеливый подход
  • Если JFrame не слишком тяжелый и часто используется, используйте приблизительный подход