Casi 7 años después y esta pregunta sigue siendo tan válida como antes.
En mi opinión, javafx nunca debe ser importado por ninguna de las clases que pertenecen al Modelo. Sin embargo, pueden funcionar muy bien si adoptas un MVVM combinado con la arquitectura MVC. En este sentido, el
- entidades = (dominio) modelo ( M )
- Archivos FXML = ver ( V )
- el controlador sigue siendo el controlador ( C )
- el modelo de vista ( VM ) = un nuevo conjunto de clases de datos que solo contienen propiedades javafx y una referencia al objeto de dominio real (M) que representa. Puede pasar llamadas de método de lógica de negocios más adelante a este objeto, actuando como un compuesto / decorador.
Otra forma de ver las cosas es pensar en la clase de controlador como parte de la vista, ya que todo lo que hace es vincular el modelo de vista con la vista (datos y acciones). Por lo tanto, podría llamarse fácilmente Presentador o incluso Binder. Sin embargo, esto depende de cómo utilice el controlador. Si agrega lógica para manipular el modelo de vista en la clase Controller, entonces merece su nombre y tiene la arquitectura presentada anteriormente. Si la clase de controlador solo une datos del modelo a elementos de la interfaz de usuario y ActionEvents a los métodos del modelo, entonces tiende a tener la arquitectura mutante MVVM que se presenta a continuación.
Creo que estas arquitecturas de alguna manera coinciden con las ideas del tío Bob sobre arquitectura limpia (la capa de presentación).