Observer
Professor: Hyggo Almeida
O que vimos na última aula?
 Decorator
 Iterator
Observer
2
O que veremos hoje?
 Observer
Observer
3
Observer




Computação Ubíqua
Casa inteligente
Cenário não tão futurista
Software embutido
Observer
4
Observer
Minha Casa
Observer
5
Observer
 Como projetar???
Televisão
Usuário
vouChegar(30)
Telefone
vaiChegar(30)
Geladeira
Microondas mic;
ArCondicionado arc;
Torradeira tor;
Computador cp;
Geladeira gel;
vaiChegar(30)
vaiChegar(30)
Microondas
ArCondicionado
Torradeira
Computador
Observer
6
Observer
Problemas!!!
Alto acoplamento
Na verdade, o acoplamento deve ser mínimo
Computador, Microondas, televisão... etc, estão
interessados apenas no EVENTO ocorrido no telefone
 Querem ser notificados quando tal EVENTO ocorrer




Observer
7
Observer
 Solução???
 Padrão Observer
 Definição de dois papéis
• Observador (Observer)
• Ouvinte (Listener)
Observer
Avisa a todos os ouvintes interessados
quando o Evento ocorre
Observer
*
<<interface>>
Listener
Cadastra-se no observador como
interessado em um Evento
8
Observer
 No nosso exemplo
TelefoneObsevador
tocar();
addListener(EletroOuvinte);
dispararEvento();
cria
anuncia
*
<<interface>>
EletroOuvinte
receiveEvent(EventoToque);
Computador
Microondas
ArCondicionado
EventoToque
getTime();
Observer
Torradeira
Geladeira
9
Observer
 Intenção
 definir uma dependência um-para-muitos entre objetos, de
maneira que quando um objeto muda de estado todos os
seus dependentes são notificados e atualizados
automaticamente.
 Também conhecido como:
 Dependents e Publish-Subscribe
Observer
10
Observer
 Aplicabilidade
 quando a mudança em um objeto exige a mudança em
outros, e você não sabe quantos objetos necessitam ser
mudados.
 quando um objeto deveria ser capaz de notificar outros
objetos sem fazer hipóteses, ou usar informações, de quem
são estes objetos.
Observer
11
Observer
 Conseqüências
 baixo acoplamento entre os anunciantes e os ouvintes da
notificação
 suporte para comunicações baseadas em difusão
(broadcast)
 atualizações inesperadas
Observer
12
Observer
 Implementem o exemplo de Oberver apresentado
 Apenas com Computador e Microondas
 Estes dois terão apenas o método receiveEvent exigido pela
interface
 O método de Computador deve imprimir na tela:
• “Recebendo dados do trabalho”
 O método de Microondas deve imprimir na tela:
• “Esquentando o Frango!!!”
Observer
13
O que vimos hoje?
 Observer
Observer
14
O que veremos na próxima aula?
 Strategy
 Template Method
Observer
15
Dúvidas?
?
Observer
16
Download

13.Observer