padrão de projeto observer
DESCRIPTION
Apresentação feita por Luiza Uira para a disciplina de Programação Modular. Graduação em Sistemas de Informação - 4º período - PUC MG. Profª.: Anna Tostes.TRANSCRIPT
![Page 1: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/1.jpg)
ObserverPadrão comportamental
Programação ModularProfessora: Anna Izabel
Grupo: Alisson, Gustavo, Joanna, Luiza, Túlio
![Page 2: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/2.jpg)
“O padrão Observer define uma dependência um-para-muitos entre objetos para que, quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente”. (ROCHA, 2003).
•Padrão muito comum, recebendo ainda os nomes de Dependents e Publish-Subscribe.
![Page 3: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/3.jpg)
•Padrão comportamental•Está na camada Model da Arquitetura
MVC
![Page 4: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/4.jpg)
Pequeno parênteses: Padrão MVC
• Tem como objetivo separar a lógica de negócio da lógica de apresentação, permitindo que possam ser desenvolvidos e testados separadamente.
• É um dos chamados “padrões compostos”, pois é a junção de três outros padrões:
Strategy PatternObserver PatternComposite Pattern
![Page 5: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/5.jpg)
Motivação
•Um objeto que possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta.
![Page 6: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/6.jpg)
Os objetos-chave neste padrão são:
•Subject (assunto)•Observer (observador)
Subject pode ter um número qualquer de observadores dependentes.
É o publicador de notificações.
![Page 7: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/7.jpg)
Aplicabilidade
1. Quando uma abstração apresenta dois aspectos, um dependente do outro. Encapsulando estes aspectos em objetos separados permite que você os varie e reutilize de forma independente;
2. Quando uma modificação em um objeto requer modificação em outros, e você não sabe (em tempo de programação) quantos objetos precisam ser modificados;
3. Quando um objeto deve ser apto a notificar outros objetos sem saber quem são estes objetos. Em outras palavras, quando você os quer fracamente acoplados.
![Page 8: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/8.jpg)
![Page 9: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/9.jpg)
Exemplo Uma contrução onde existem vários operários; Uma sirene toca informando uma mudança de estado… O alarme da sirene é uma mensagem enviada aos observadores
(Funcionários), que pode ser um intervalo, término do expediente, etc.
![Page 10: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/10.jpg)
Como implementar?•1) Identificar os objetos que desejam ser
notificados – OBSERVADORES•2) Todos devem obedecer à mesma
interface
OBSERVADORES
INTERFACE
![Page 11: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/11.jpg)
•3) O observador deve saber o que observar. O observado não precisa saber quem observa.
Para isso, os observadores registram-se no observado.
• -Adicionar();• -Remover();• -Notificar();
• -Atualizar(); OBSERVADOR
OBSERVADO
Notificar varre a lista
de observadore
s
![Page 12: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/12.jpg)
![Page 13: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/13.jpg)
![Page 14: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/14.jpg)
![Page 15: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/15.jpg)
![Page 16: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/16.jpg)
Vantagens
•Tanto observadores quando sujeitos observados podem ser reutilizados e ter sua interface e implementação alteradas sem afetar o sistema.
• O acoplamento forte é reduzido com o uso de interfaces e classes abstratas.
![Page 17: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/17.jpg)
Desvantagens
•O abuso pode causar sério impacto na performance. Sistemas onde todos notificam todos a cada mudança ficam inundados de requisições.
![Page 18: Padrão de Projeto Observer](https://reader037.vdocuments.net/reader037/viewer/2022103001/5590a6a61a28ab5f528b45e7/html5/thumbnails/18.jpg)
Referências Bibliográficas
•http://www.slideshare.net/jucindra/padres-de-projeto-observer
•http://www.gfsolucoes.net/trabalhos/padroes_de_projetos.pdf