Exemplo de observer

576 palavras 3 páginas
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 externo int 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) {
RevistaInformatica revistaInformatica = (RevistaInformatica) revistaInfSubject; edicaoNovaRevista = revistaInformatica.getEdicao();
System.out.println("Atenção, já chegou a mais uma edição da Revista Informatica. " +
"Esta é a sua 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 que setChanged() 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

Relacionados

  • Observer DOC
    5022 palavras | 21 páginas
  • Design Patterns - Decorator & Observer
    1374 palavras | 6 páginas
  • Padrões de Projeto ( Desing Patterns) Padrão Comportamental: Observer
    1438 palavras | 6 páginas
  • Redes de arquiteturas de computadores
    2750 palavras | 11 páginas
  • design patters
    2873 palavras | 12 páginas
  • EXERCICIO POS
    548 palavras | 3 páginas
  • Padrões comportamentais
    2416 palavras | 10 páginas
  • Terceira tarefa modular
    1248 palavras | 5 páginas
  • Padrões de Software
    2208 palavras | 9 páginas
  • Banco de dados
    1320 palavras | 6 páginas