@fattan
программист

Где в JavaFX грамотнее писать метод main?

Есть Оракал туториалы.

Там простые примеры, в которых приложение строится так:

public class ColorfulCircles extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

// код GUI

        primaryStage.show();
    }
}


Однако, когда шерстил стэковерфлоу, наткнулся в комментах на замечание одного америкоса. Он рекомендовал выносить main метод в отдельный класс. Типа, так правильнее:

Main-класс:

import javafx.application.Application;

public class Main {
    public static void main(String[] args) {
        Application.launch(TaskManagerApp.class, args);
    }
}


И само приложение:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class TaskManagerApp extends Application {

    @Override
    public void start(Stage primaryStage) {

        Scene scene = new Scene(new Label("Hello world"), 420, 500);

        primaryStage.setScene(scene);
        primaryStage.show();
    }
}


Внимание вопрос: какой подход правильнее?
  • Вопрос задан
  • 649 просмотров
Решения вопроса 1
halogen
@halogen
Java developer
Плохо использовать пренебрежительные названия, особенно когда дядька даёт дельный совет, ю ноу. Автор на S.O. имеет в виду, что нужно разделять понятия entry point и application. Т.е., должна быть входная точка, а должно быть и приложение. Отдельно. Плюс такого подхода в том, что лучше соблюдается SRP, а также приложение можно использовать в других входных точках "более чисто": будь то Android или GWT (но это зависит от крутости понимания и реализации ООП), или обычные юнит-тесты. Класс Application можно считать фасадом с точки зрения шаблонов проектирования. JavaFx здесь ни при чём.

----

Заметки на полях

В учебниках стараются писать максимально простой код, чтобы упростить понимание и закрепление материала. Поэтому main(String... args) в таких случаях встречается почти везде.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы