2015-09-05 3 views
1

Лучше запустить пользовательский интерфейс из метода в том же классе основного или из другого класса, называемого основным? Вот пример:Запуск GUI: фасад vs main

От основного

Main.java

package main_version; 

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class Main { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       launchGUI(); 
      } 
     }); 
    } 

    private static void launchGUI() { 
     JFrame frame = new JFrame("Main version"); 
     //other code 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(333, 333); 
     frame.setVisible(true); 
    } 

} 

из другого класса

Main.java

package facade_version; 

import javax.swing.SwingUtilities; 

public class Main { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       UserInterface.lauch(); 
      } 
     }); 

    } 

} 

UserInterface.java

package facade_version; 

import javax.swing.JFrame; 

public class UserInterface { 

    public static void lauch() { 
     JFrame frame = new JFrame("Facade version"); 
     //other code 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(333, 333); 
     frame.setVisible(true); 
    } 
} 
+0

Считаете ли вы, что это имеет значение? – Dici

+1

@ Dici: Что касается функциональности, конечно нет. Но с фасадом основной класс зависит только от класса UserInterface (а не с JFrame и, в конечном итоге, с другими графическими компонентами). Или я не прав? Причина этого вопроса. –

ответ

-1

Я рекомендую иметь каждый компонент GUI в другом классе, для повторного использования.

Однако это не имеет большого значения для небольших проектов, если кто-то хочет что-то проверить, он может просто пропустить создание нескольких классов. Это не имеет никакого значения для компилятора.

+0

Все кажется статичным здесь, поэтому в любом случае нет компонента – Dici

+0

@Dici JFrame является компонентом –

+0

Я имею в виду, что OP не определяет какой-либо компонент. Обычно класс GUI расширяет 'JFrame' и имеет некоторые атрибуты, создавая новый компонент, но в этом случае все статично. Эти два фрагмента эквивалентны во всех аспектах – Dici