Value Object (VO) é Model (MVC)?

Boa tarde.
Meus objetos de valor (VO) são models?
Tenho 2 VOs: Orcamento e ListaDeOrcamentos
Eles são Models?
Pelo que li, o model tem que ter estrutura para registrar os Views interessados no model.
Eu deveria transformar o objeto de valor em model ou deveria criar outra classe, herdada dos meus VOs ?

Como eu já te respondí neste tópico (http://www.guj.com.br/posts/list/21574.java), o legal seria ter uma classe separada de model, que trabalharia com um conjuntos de VOs a serem exibidos.

Obrigado.

Eu vou apresentar as listas de objetos em tabelas.
E quanto aos TableModels? O que eu faria com eles?
Deixaria no pacote Model? Deixo no pacote view ? Deixo dentro de alguma outra classe ?

Pode deixar no VIEW.

Obrigado.

Para implementar o MVC eu sempre terei que criar essas classes abaixo?
Vi em um exemplo que tem que implementar o padrão observer para poder notificar as Views interessadas no model. Veja a estrutura na figura em anexo.

GerenciadorOrcamento (model: adicionar, obterLista, excluir)
View
Controller
OrcamentoEvent
OrcamentoListener (interface)



Não precisa implementar tudo necessariamente. Depende do que quer. Olha um exemplo que eu posso usar um model já pronto.

List pessoas = getListaDePessoasLegais(); //lista de objetos Pessoa DefaultTableModel model = new DefaultTableModel( pessoas.toArray() ); jTable.setModel( model );

Ahm, legal.
Então eu poderia ter um controller e um model derivado de AbstractTableModel. Seria isso?
Ai eu colocaria um código similar ao seu no meu controller.
O controller instancia o objeto Painel, e manda para o table do painel a instancia do TAbleModel. ?

Obrigado,
acho que dessa forma já dá pra implementar.

Pode ser isso.
Um projeto que eu to refazendo eu preferí abstrair tudo e não deixar a camada de negócio saber como trabalha a view.

Então eu trabalho com interfaces. Algo mais ou menos assim:

No meu controller:

CadastroGUI gui = GUIFactory.getCadastroGUI(); gui.show(); List pessoas = getPessoasMalvadas(); gui.mostrarPessoas( pessoas );

E neste caso acima não importa como será a implementação da minha view, seja ela Swing, AWT, SWT ou Thinlet.

E eu tenho uma classe que implementa a interface CadastroGUI, que no método mostrarPessoas() faz assim:

public void mostrarPessoas( List pessoas ) { DefaultTableModel m = new DefaultTableModel( pessoas.toArray() ); meuJTable.setModel( m ); }

E pronto!

Pq se um dia minha view mudar de Swing pra Thinlet, eu não vou mais usar Models do Swing, portanto o impacto da mudança é pequeno. Só mudo a view e não as outras camadas.

public void mostrarPessoas( List pessoas ) { DefaultTableModel m = new DefaultTableModel( pessoas.toArray() ); meuJTable.setModel( m ); }

só pra confirmar…
na instanciação do DefaultTableModel teria que passar também um parâmetro referente a lista dos nomes das colunas, nao teria? Ou você já deixa isso em algum outro lugar?

Isso mesmo.

http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs