Quase 7 anos depois, e essa pergunta ainda é tão válida quanto antes.
Na minha opinião, o javafx nunca deve ser importado por nenhuma das classes pertencentes ao modelo. No entanto, eles podem funcionar muito bem se você adotar um MVVM combinado com a arquitetura MVC. Nesse sentido, o
- entidades = modelo (domínio) ( M )
- Arquivos FXML = visualização ( V )
- o controlador ainda é o controlador ( C )
- o modelo de visualização ( VM ) = um novo conjunto de classes de dados que contêm apenas propriedades javafx e uma referência ao objeto de domínio real (M) que ele representa. Ele pode passar as chamadas do método de lógica de negócios para esse objeto, atuando como um composto / decorador.
Outra maneira de ver as coisas é pensar na classe do controlador como parte da visão, já que tudo o que faz é vincular o modelo de visão à visão (dados e ações). Portanto, poderia ser facilmente chamado de apresentador ou até fichário. Isso depende, no entanto, de como você usa o controlador. Se você adicionar lógica para manipular o modelo de exibição na classe Controller, ele merece seu nome e você terá a arquitetura apresentada acima. Se a classe do controlador vincular apenas os dados do modelo aos elementos da UI e o ActionEvents aos métodos de modelagem, você tenderá a apresentar a arquitetura mutante do MVVM abaixo.
Eu acho que essas arquiteturas de alguma forma combinam as idéias do tio Bob sobre arquitetura limpa (a camada de apresentação).