Professor: Hyggo Almeida Observer. O que vimos na última aula? Decorator Iterator 2 Observer.
Transcript of Professor: Hyggo Almeida Observer. O que vimos na última aula? Decorator Iterator 2 Observer.
Professor: Hyggo Almeida
ObserverObserver
O que vimos na última aulaO que vimos na última aula??
Decorator Iterator
2Observer
O que veremos hojeO que veremos hoje??
Observer
3Observer
ObserverObserver
Computação Ubíqua Casa inteligente Cenário não tão futurista Software embutido
4Observer
ObserverObserver
Observer 5Minha Casa
ObserverObserver
Como projetar???
6Observer
Telefone Microondas
ArCondicionado
Torradeira
Computador
Geladeira
Microondas mic;ArCondicionado arc;
Torradeira tor;Computador cp;Geladeira gel;
vaiChegar(30)
vaiChegar(30)vaiChegar(30)
vaiChegar(30)
vaiChegar(30)
Usuário vouChegar(30)
Televisão
ObserverObserver
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
7Observer
ObserverObserver
Solução???Padrão ObserverDefinição de dois papéis
• Observador (Observer)• Ouvinte (Listener)
8Observer
Observer <<interface>>Listener
*
Avisa a todos os ouvintes interessados quando o Evento ocorre
Cadastra-se no observador como interessado em um Evento
ObserverObserver
No nosso exemplo
9Observer
TelefoneObsevador <<interface>>EletroOuvinte
tocar();addListener(EletroOuvinte);
dispararEvento();
receiveEvent(EventoToque);
EventoToque
getTime();
cria
anuncia
Computador
ArCondicionado
Geladeira
Torradeira
Microondas
*
ObserverObserver
Intençãodefinir 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
10Observer
ObserverObserver
Aplicabilidadequando 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.
11Observer
ObserverObserver
Conseqüênciasbaixo acoplamento entre os anunciantes e os
ouvintes da notificaçãosuporte para comunicações baseadas em difusão
(broadcast)atualizações inesperadas
12Observer
ObserverObserver
Implementem o exemplo de Oberver apresentado Apenas com Computador e MicroondasEstes dois terão apenas o método receiveEvent
exigido pela interfaceO método de Computador deve imprimir na tela:
• “Recebendo dados do trabalho”O método de Microondas deve imprimir na tela:
• “Esquentando o Frango!!!”
13Observer
O que vimos hojeO que vimos hoje??
Observer
14Observer
O que veremos na próxima aulaO que veremos na próxima aula??
Strategy Template Method
15Observer
DúvidasDúvidas??
?16Observer