Saudações pessoal!
Estou tentando implementar um padrão MVC, do meu jeito aqui, usando Observer, faço isso da seguinte maneira:
em meu pojo, defini um metodo que notifica os observadores e seta uma string action e uma string método, essas strings utilizo em uma classe que ira envocar usando reflection a action e o metodo definidos no pojo. Fiz alguns teste aqui, e funcionou perfeito, como que eu vou fazer pra retornar uma exception? Digo, tenho uma idéia aqui, criaria um observable apenas para setar mensagens, ou seja, na primeira camada do MODEL, onde a exception chegaria eu setada esse Objeto de mensagens, e a tela observaria esse cara e jogaria um dialog na tela populando ela. sei la… Queria saber se alguém tem alguma sugestão? pode me ajudar com isso?
Abraço a todo comunidade!
Utilizando Observer em MVC swing
4 Respostas
public class MinhaTelaSwing {
private JButton botaoOk;
private JButton botaoCancelar;
private JButton botaoFazQualquerCoisa;
private JTextField textFieldCoisaDigitada;
public MinhaTelaSwing() {
// ... blablabla
}
public void addOkListener(ActionListener listener) {
botaoOk.addActionListener(listener);
}
public void addCancelarListener(ActionListener listener) {
botaoCancelar.addActionListener(listener);
}
public void addQualquerCoisaListener(ActionListener listener) {
botaoFazQualquerCoisa.addActionListener(listener);
}
public String getCoisaDigitada() {
return textFieldCoisaDigitada.getText();
}
}
public class MeuController {
private final MinhaTelaSwing tela;
private final MinhaClasseModel model;
public MeuController(MinhaTelaSwing tela, MinhaClasseModel model) {
this.tela = tela;
this.model = model;
tela.addOkListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// fazer algo.
}
});
tela.addCancelarListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// fazer algo.
}
});
tela.addQualquerCoisaListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// fazer algo.
}
});
}
}
victorwss obrigado por responder, mas onde entraria o observer nesse seu mvc? do jeito que eu pensei está totalmente fora? eu queria apenas umas sugestão para complementar minha idéia…
obrigado novamente!
Abs.
victorwss obrigado por responder, mas onde entraria o observer nesse seu mvc? do jeito que eu pensei está totalmente fora? eu queria apenas umas sugestão para complementar minha idéia…
obrigado novamente!
Abs.
Os listeners representam o pattern Observer. Não precisa ter uma classe chamada Observer (como por exemplo java.util.Observer) para implementar o padrão. Aliás, se você for ler aquele livro “Use a cabeça - padrões de projeto”, ele diz para NÃO usar a classe java.util.Observer.
Na verdade não entendi direito a tua mensagm original, não ficou claro. Mas usar reflection para implementar o observer com “actions” codificadas na forma de strings não me parece ser uma boa forma de resolver o problema.
ahh sim, entendi, até o momento pensava que o padrão estava ligado diretamente a java.util.Observer, obrigado por responder, vou pesquisar um pouco mais, mas que pena tava ficando legal aqui, tomei base no projeto web que trabalho na empresa com relação ao reflection e as target…