Javafx Hide Show [дубликат]

Может быть полезно программировать интерфейсы, даже если мы не зависим от абстракций.

Программирование на интерфейсы заставляет нас использовать контекстно-зависимое подмножество объекта. Это помогает, потому что это:

  1. мешает нам делать контекстуально неприемлемые вещи, а
  2. позволяет нам безопасно изменить реализацию в будущем.

Например, рассмотрим класс Person, который реализует интерфейс Friend и Employee.

class Person implements AbstractEmployee, AbstractFriend {

}

В контексте дня рождения человека мы программируем интерфейс Friend , чтобы предотвратить обращение с человеком как Employee.

function party() {
    const friend: Friend = new Person("Kathryn");
    friend.HaveFun();
}

В контексте работы человека мы программируем интерфейс Employee, чтобы предотвратить размывание границ рабочего места.

function workplace() {
    const employee: Employee = new Person("Kathryn");
    employee.DoWork();
}

Отлично. Мы ведем себя соответственно в разных контекстах, и наше программное обеспечение работает хорошо.

В будущем, если наш бизнес изменится для работы с собаками, мы сможем довольно легко изменить программное обеспечение. Сначала мы создаем класс Dog, который реализует как Friend, так и Employee. Затем мы благополучно меняем new Person() на new Dog(). Даже если обе функции имеют тысячи строк кода, это простое редактирование будет работать, потому что мы знаем следующее:

  1. Функция party использует только подмножество Friend в Person.
  2. Функция workplace использует только подмножество Employee в Person.
  3. Класс Dog реализует интерфейсы Friend и Employee.

С другой стороны, если либо party, либо workplace должны были запрограммироваться против Person, существует риск того, что оба имеют Person -специфический код. Переход от Person в Dog потребовал бы, чтобы мы расчесывали код, чтобы искоренить любой Person -специфический код, который Dog не поддерживает.

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

5
задан Mateus Viccari 2 September 2015 в 14:02
поделиться

1 ответ

Как только инструментарий JavaFX запущен, по умолчанию он будет закрываться, когда последнее видимое окно будет закрыто.

Чтобы предотвратить это, вы можете вызвать

Platform.setImplicitExit(false);

Обычно сделайте это в своем start(...) методе, хотя его можно вызывать из любого потока.

Чтобы выйти из приложения, вам нужно будет вызвать

Platform.exit();

(в качестве приложения больше не выходит автоматически).

19
ответ дан James_D 22 August 2018 в 08:15
поделиться
  • 1
    Спасибо, я искал неправильное решение. – Mateus Viccari 2 September 2015 в 17:14
  • 2
    Извините, если это немного устарело, но из любопытства, вы случайно не знаете, как показать скрытую программу? – ZenOokami 28 July 2016 в 17:12
  • 3
    Предполагая, что вы имеете в виду отображение скрытого окна, я бы предположил, что вызов show() будет делать то, что вы хотите. – James_D 28 July 2016 в 17:30
  • 4
    Можем ли мы реализовать системный лоток вместе с этими действиями? – some Folk 8 August 2016 в 12:46
Другие вопросы по тегам:

Похожие вопросы: