Майже через 7 років, і це питання все ще є таким же актуальним, як і раніше.
На мою думку, javafx ніколи не повинен бути імпортований жодним з класів, що належать до моделі. Однак вони можуть працювати дуже добре, якщо ви прийняли MVVM у поєднанні з MVC архітектурою. У цьому сенсі
- сутні = модель (домен) ( M )
- Файли FXML = перегляд ( V )
- контролер все ще є контролером ( C )
- view-model ( VM ) = новий набір класів даних, що містять лише властивості javafx та посилання на фактичний об'єкт домену (M), який він представляє. Він може передавати цей виклик методом ділової логіки далі, виступаючи композитором / декоратором.
Інший спосіб бачити речі - це уявити клас контролера як частину перегляду, оскільки все, що він робить, - це зв’язати модель перегляду з поданням (дані та дії). Тож це можна було б легко назвати ведучим або навіть біндером. Однак це залежить від способу використання контролера. Якщо ви додасте логіку для маніпулювання моделлю view у класі Controller, то вона заслуговує на свою назву, і у вас є архітектура, представлена вище. Якщо клас контролера прив'язує дані моделі лише до елементів інтерфейсу, а ActionEvents - до модельних методів, тоді, як правило, архітектура мутантів MVVM представлена нижче.
Я думаю, що ці архітектури якось відповідають ідеям дядька Боба щодо чистої архітектури (презентаційний шар).