O JavaFX forneceu vários novos objetos Property, como os javafx.beans.property.DoubleProperty
que permitem definir campos que podem ser observados e sincronizados automaticamente.
Em muitos exemplos de JFX, a classe de modelo MVC possui vários desses campos de Propriedade, que podem ser vinculados automaticamente à visualização.
No entanto, isso parece estar nos encorajando a colocar propriedades JFX em nossos objetos Domain (se você assumir que a classe Model será um objeto de domínio), o que me parece uma fraca separação de preocupações (por exemplo, colocar código GUI no domínio )
Alguém viu esse problema sendo resolvido na "vida real" e, se sim, como foi feito?
properties
javafx
domain-objects
pjm56
fonte
fonte
Respostas:
Venho brincando com o JavaFX 2.0, sobre o qual suponho que sua pergunta seja. Não é um código de produção real, apenas um projeto pessoal, mas encontrei o mesmo problema que você mencionou acima. O modelo inteiro tende a se tornar dependente da estrutura 2D, e eu não gosto disso.
O que fiz, dividi todas as classes do modelo em duas, a classe real do modelo, que tem capacidade para carregar seu conteúdo do banco de dados, sabe como ele altera seu estado, etc etc ... e a classe de representação que decide a aparência na tela. Este último conteria todas as classes Property.
Você encontrará o mesmo design em qualquer estrutura MVC, como o Swing. é que aqui não há como escapar.
fonte
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
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).
fonte