A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Observer Mantendo seus objetos atualizados Daniel Roloff Carlos Machado Enzo Zuccolotto Luiz Felipe Trevisan Rafael Holtz.

Apresentações semelhantes


Apresentação em tema: "Observer Mantendo seus objetos atualizados Daniel Roloff Carlos Machado Enzo Zuccolotto Luiz Felipe Trevisan Rafael Holtz."— Transcrição da apresentação:

1 Observer Mantendo seus objetos atualizados Daniel Roloff Carlos Machado Enzo Zuccolotto Luiz Felipe Trevisan Rafael Holtz

2 Imagine… Uma editora começa a publicar jornais; Você assina-o e todo dia recebe os mesmos; Você cancela a assinatura quando não quizer mais recebê-los e eles param de chegar; A editora entrega jornais para pessoas, hotéis, companhias aéreas e outras empresas fazem e cancelam assinaturas constantemente. ESTE É O OBSERVER!

3 Imagine… Um alarme programado para despertar; Você adiciona eventos ao despertar o alarme. Quando alarme desperta, a torradeira se liga, o café começa a ser passado e o rádio começa a tocar sua rádio preferida. ESTE É O OBSERVER!

4 Definições Define a dependência um-para-muitos entre objetos para que quando um objeto mude de estado todos os seus dependentes sejam avisados e atualizados automaticamente. Utilizando baixo encapsulamento!

5 Definições Nome: Observer(Publicacao- Assinatura) Problema: diferentes tipos de objetos assinantes estão interessados nas mudanças de estado ou nos eventos de um objeto publicador e cada um quer reagir de sua propria maneira exclusiva quando o publicador gerar um evento. Além disso, o publicador quer manter acoplamento fraco com os assinantes. O que fazer? Solução : defina uma interface assinante ou ouvinte. Os assinantes implementam essa interface. O publicador pode registrar dinamicamente os assintantes que estejam interessados em um evento e notificá-los quando um evento ocorrer.

6 Definições Padrão Comportamental, isto é, define o comportamento dos objetos. Não permite que a estrutura interna do objeto que está se comunicando seja exposta. Swing utiliza muito este padrão, assim como muitos frameworks GUI. Também será encontrado em outros lugares como JavaBeans e RMI.

7 Participantes Subject: - conhece seus observadores. Um número qualquer de objetos Observer pode observar um subject. - fornece uma interface para acrescentar e remover objetos para associar e desassociar objetos observer. Observer: - define uma interface de atualização para objetos que deveriam ser notificados sobre mudancas em um subject.

8 Participantes ConcreteSubject: - armazena estados de interesse para objetos ConcreteObserver. - envia uma notificação para os seus observadores quando seu estado muda. ConcreteObsever: - mantém uma referência para um objeto ConcreteSubject. - armazena estados que deveriam permanecer consistentes com os do Subject. - implementa a interface de atualização de observer, para manter seu estado consistente com o do subject.

9 Diagrama de Classes Contêm o estado e o controla O método update é chamado quando o estado de Subject é alterado

10 Java Java tem uma implementação própria; É necessário estender a superclasse java.util.Observable (Péssimo!) Possui um método setChanged() utilizado para informar que deve ser enviado o estado para as demais classes. Útil para quando o estado varia muito e queremos acionar os observadores só em determinados casos.

11 Exemplo Vamos ao código! Try it!

12 Desvantagens A necessidade de extender uma classe na implementação default do Java Não é possível nem usar composição já que o método setChanged é privado Deve-se otimizar as notificações para que não sobrecarregar os observadores

13 Bibliografia Padrões de Projeto – Use a Cabeça – Eric Freeman e Elisabeth Freeman Spring Loaded Observer Pattern – Scott Priolo le.tss?l=SpringLoadedObserverPattern le.tss?l=SpringLoadedObserverPattern Utilizando UML e Padrões - Craig Larman Padrões de Projeto. Erich Gamma.

14 Dúvidas?


Carregar ppt "Observer Mantendo seus objetos atualizados Daniel Roloff Carlos Machado Enzo Zuccolotto Luiz Felipe Trevisan Rafael Holtz."

Apresentações semelhantes


Anúncios Google