segunda-feira, 30 de março de 2009

Implementando Obsever em Java

3

Segundo a wikipedia:
O padrão obsever diz que um objeto (observado) mantem uma lista de outros objetos (observadores), e notifica aos observadores qualquer mudança que ocorro no observado.

O Java já traz uma implementação do observer padrão, e a utilizamos aqui onde trabalho pra implementar o MVC com Swing, e realmente achei uma abordagem muito interesse, e simples de ser feita.

é muito simples de se utilizar, e esse post vai ser pequeno sim :).

primeiramente na nossa classe observada temos que fazela extender a Obervable e isso já a torna apta para ser observada por outra classe, as classes que vão observala devem implementar a interface Observer que contem a assinatura de um único metodo update, a cada notificação do modelo é chamado esse metodo update, ridiculamente simples e facil.

Vamos a um exemplo prático:

  1. public class MeuObservado extends Observable{  
  2.   
  3.   
  4.   
  5.   public void hello(){  
  6.   
  7.      setChanged();  
  8.   
  9.      notifyObservers("Hello World!");  
  10.   
  11.   }  
  12.   
  13.   
  14.   
  15. }  


Agora quem vai observar essa classe

  1. public class MeuObservador implements Observer{  
  2.   
  3.     public MeuObservador(){  
  4.   
  5.         MeuObservado obj = new MeuObservado();  
  6.   
  7.         obj.addObserver(this);  
  8.   
  9.         obj.hello();  
  10.   
  11.     }  
  12.   
  13.     public void update(Observer o, Object arg){  
  14.   
  15.         System.out.println(arg);  
  16.   
  17.     }  
  18.   
  19. }  


só executar e pronto, um hello world utilizando observer, se vc tiver mais classes que utilizem esse hello world basta adiciona-la ao observer, e ela será notificada também. simples, pratico e facil. Excelente maneira de proporcionar baixo acoplamento entre as classes.

Outra hora vou postar sobre como criar listener no Swing.

[]'s






3 comentários:

Anônimo disse...

Oi colega posta um exemplo com swing ai do Observer.
Se vc puder e, se vc tem como mostrar, alguma coisa com MVC e swing + acesso a banco. Ta certo que SWING já eh MVC, mas implemtando uma aplicação swing com acesso a banco.
Otimos post

Unknown disse...

Não entendi nem compilou esse seu post. falta código ...

Rafael Felix disse...

Qual foi o erro ou o problema no codigo?

 
Design by ThemeShift | Bloggerized by Lasantha - Free Blogger Templates | Best Web Hosting