Bom, estou com meu grupo desenvolvendo nosso TCC.
Foi imposto que, na arquitetura MVC que usaremos, “a View não pode enxergar objetos POJO”.
Beleza… Para solucionar isso, eu faço uso de TableModels.
Mas aí que tá a questão… Onde entrariam as TableModels? Em qual pacote se encaixariam melhor?
As Views fazem uso das TableModels.
As minhas TableModels chamam os respectivos Controllers.
Os Controllers fazem uso dos Services, e assim por diante.
Seria melhor criar um pacote separado para as TableModels?
Se sim, onde colocar esse pacote?
Se não, onde seria melhor colocá-las?
[quote]Mas aí que tá a questão… Onde entrariam as TableModels? Em qual pacote se encaixariam melhor?
As Views fazem uso das TableModels.
As minhas TableModels chamam os respectivos Controllers.
Os Controllers fazem uso dos Services, e assim por diante.
Seria melhor criar um pacote separado para as TableModels?
Se sim, onde colocar esse pacote?
Se não, onde seria melhor colocá-las? [/quote]
Bom, eu usaria o table model como “retorno do controller”. E o controller seria chamado por algum evento da tua JTable(ou de outro componente de tela), e não usar ele dentro do TableModel, como você disse.
E eu colocaria os TableModels em um pacote separado dentro da apresentação (pacote view, gui ou qualquer outro nome dado). Porque caso você mude o tipo de apresentação, ele não vai fazer mais sentido, e seria “descartado” junto com o pacote apresentação.
Opa, Pozzo!
Vamos supor então que haja o seguinte código…
Há uma View, com um botão chamado “Inserir”, onde este tem um evento, o qual chama o método “inserirRegistro” da minha TableModel.
Nicolas, eu chamaria o método “inserirRegistro” direto no evento do listener “ButtonInserir”, retornaria o Contato inserido na base e adicionaria esse retorno no custom table model, através de um método “addContato”.
Bom, a forma que você fez me parece legal também. A minha forma é mais um “costume meu”.
[quote=pozzo]
E eu colocaria os TableModels em um pacote separado dentro da apresentação (pacote view, gui ou qualquer outro nome dado). Porque caso você mude o tipo de apresentação, ele não vai fazer mais sentido, e seria “descartado” junto com o pacote apresentação.[/quote]
Com relação a colocar os TableModels em um pacote View, acho que não seria viável no quesito “descartá-los”.
O TableModel representa dos dados lidos de um BD, por exemplo.
Então, um TableModel para uma classe POJO Contato deve ser válido para todo e qualquer formulário onde esteja trabalhando com Contatos, certo?
Porque você excluiria os TableModels?
O que eu quis dizer em “mudar a view” é, na verdade, mudar de plataforma. Por exemplo, de Desktop (que é o teu caso) para Web. Como você pretende reaproveitar o TableModel na web?