Exemplo de observer

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (576 palavras )
  • Download(s) : 0
  • Publicado : 18 de março de 2013
Ler documento completo
Amostra do texto
import java.util.Observable;
import java.util.Observer;
public class RevistaInformatica extends Observable {
private int edicao;
public void setNovaEdicao(int novaEdicao) {
this.edicao =novaEdicao;
setChanged();
notifyObservers();
}
public int getEdicao() {
return this.edicao;
}
public static void main(String[] args) {
//poderia receber a nova edicao atraves de um recurso externoint novaEdicao = 3;
RevistaInformatica revistaInformatica = new RevistaInformatica();
Assinante1 assinante1 = new Assinante1(revistaInformatica);
revistaInformatica.setNovaEdicao(novaEdicao);
}
}class Assinante1 implements Observer {
Observable revistaInformatica;
int edicaoNovaRevista;
public Assinante1(Observable revistaInformatica) {
this.revistaInformatica = revistaInformatica;revistaInformatica.addObserver(this);
}
@Override
public void update(Observable revistaInfSubject, Object arg1) {
if (revistaInfSubject instanceof RevistaInformatica) {
RevistaInformaticarevistaInformatica = (RevistaInformatica) revistaInfSubject;
edicaoNovaRevista = revistaInformatica.getEdicao();
System.out.println("Atenção, já chegou a mais uma edição da Revista Informatica. " +
"Esta é asua edição número: " + edicaoNovaRevista);
}
}
}

Acima temos a implementação do Padrão de Projeto Observer utilizando a API do Java. Nota -se que a
RevistaInformatica é o Subject que estáaguardando registros de cliente. Assinante1 é um assinante que se
registra na RevistaInformatica para receber notificações sempre que uma nova edição for publicada. Vale
ressaltar novamente quesetChanged() sempre deve ser chamado antes de notifyObservers() ou o estado
interno do objeto não será modificado e ao chamar diretamente notifyObserver() nada acontecerá, pois o
estado não foi alterado(este estado é guardado na API). Isso ocorre porque dentro de notifyObservers()
temos tipo uma condicional “if (setChanged())” para saber se o estado foi alterado.
Um detalhe a ser observado é que...
tracking img