Pergunta

Tenho alguma lógica de domínio implementada em vários POJOs.Quero escrever uma interface de usuário Swing para permitir que o usuário inicie e veja os resultados de várias ações de domínio.

Qual é o melhor padrão/estrutura/biblioteca para comunicações entre a UI e o domínio?Isso se resume em:

  • a IU é capaz de converter um gesto do usuário em uma ação de domínio
  • o domínio é capaz de enviar informações de estado/resultado de volta à IU para fins de exibição

Estou ciente do MVC como um conceito amplo e mexi no padrão Observer (cuja implementação Java tem algumas desvantagens, se bem entendi), mas estou me perguntando se existe uma prática recomendada aceita para esse problema?

Foi útil?

Solução

Definitivamente MVC - algo assim exemplo o que claramente divide as coisas.O problema com os exemplos do Swing é que eles parecem mostrar o MVC funcionando dentro do material do swing, o que não me parece certo

Outras dicas

MVC é fantástico para um widget individual, mas fica um pouco indisciplinado quando você tem pages e forms com muitos widgets.

Uma coisa que pode valer a pena investigar (e não estou endossando, na verdade não usei, apenas implementei algo muito semelhante para mim) é o Estrutura de ligação de feijão (JSR295)

Eu usei o padrão Observer (usando a magia AspectJ) no passado com alguns sucesso, mas descobri que, a menos que você tomasse cuidado, rapidamente se tornaria um cluster.ah..estalido?

Rapidamente se tornou difícil de gerenciar e, o mais importante, extremamente difícil de depurar.

Editar:

Para expandir um pouco minha resposta, estávamos usando SWT, não Swing, então YMMV.Basicamente usamos AspectJ para conectar a transferência de dados dos componentes da UI para os objetos do modelo.Esses objetos modelo eram POJOs idiotas.

A lógica de negócios real foi feita 'observando' os objetos do modelo com AspectJ e disparando o evento necessário caso eles mudassem.Portanto, se você alterasse um valor em uma caixa de texto, o AspectJ seria acionado e copiaria esse valor em um POJO.Se esse campo no POJO tivesse um evento para lógica de negócios que então fogo.Se essa lógica modificasse qualquer POJO (e poderia), o AspectJ notaria e copiaria o valor do POJO para o componente da UI.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top