Padrões de Projeto - Observer

3,879 views

Published on

Padrões de Projeto - Observer.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,879
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
132
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Padrões de Projeto - Observer

  1. 1. Padrões de Projeto OBSERVER Juliana da Silva Cindra e Raquel Pereira Crespo
  2. 2. Observer <ul><li>Padrão comportamental </li></ul><ul><li>Está na camada Model da Arquitetura MVC </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  3. 3. Intenção <ul><li>O Observer é um padrão de projeto de software que define uma dependência um-para-muitos entre objetos de modo que quando um objeto muda o estado, todos seus dependentes sejam notificados e atualizados automaticamente. [GoF] </li></ul><ul><li>Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto. </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  4. 4. Motivação <ul><li>Um objeto que possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta. De uma maneira geral pode-se desejar que estes elementos sejam percorridos em várias ordens. </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  5. 5. Motivação <ul><li>Os objetos-chave neste padrão são: </li></ul><ul><li>Subject (assunto) </li></ul><ul><li>Observer (observador) </li></ul><ul><li>Subject pode ter um número qualquer de observadores dependentes. É o publicador de notificações . </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  6. 6. Motivação Juliana da Silva Cindra e Raquel Pereira Crespo
  7. 7. Motivação <ul><li>Suponha que você deseja fornecer várias visões distintas de um mesmo objeto que funciona como um repositório de dados; </li></ul><ul><li>Cada visão é criada por um objeto observador independente; </li></ul><ul><li>Caso cada observador seja diretamente conectado ao repositório, isto criará uma dependência do repositório com relação aos diferentes observadores, o que lhe reduzirá a reusabilidade e flexibilidade; </li></ul><ul><li>O padrão Observer descreve uma forma de manutenção destes relacionamentos de modo que observadores e repositórios sejam facilmente substituídos. </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  8. 8. Aplicabilidade <ul><li>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; </li></ul><ul><li>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; </li></ul><ul><li>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. </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  9. 9. Estrutura Juliana da Silva Cindra e Raquel Pereira Crespo
  10. 10. Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo <ul><li>Uma contrução onde existem vários operários; </li></ul><ul><li>Uma sirene toca informando uma mudança de estado… </li></ul><ul><li>O alarme da sirene é uma mensagem enviada aos observadores (Funcionários), que pode ser um intervalo, término do expediente, etc. </li></ul>
  11. 11. Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
  12. 12. Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
  13. 13. Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
  14. 14. Exemplo Juliana da Silva Cindra e Raquel Pereira Crespo
  15. 15. Consequências <ul><li>Acoplamento abstrato entre Subject e Observer: variação independente de observáveis e observadores; facilidade para adicionar observadores sem modificar o observável ou os outros observadores; </li></ul><ul><li>Suporte a comunicação broadcast; </li></ul><ul><li>Atualizações inesperadas. </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  16. 16. Referência bibliográfica: <ul><li>Gamma, E., Helm, R., Johnson, R. e Vlissides, J. (2000). “Padrões de Projeto: soluções reutilizáveis de software orientado a objetos”, Porto Alegre. Bookman. </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  17. 17. Sites pesquisados: <ul><li>http://www.mariosam.com/desenvolvimento/designpatterns/design-patterns-padrao-observer </li></ul><ul><li>http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/arqu/observer.htm </li></ul><ul><li>http://www.cic.unb.br/~jhcf/MyBooks/iess/Patterns/BehavioralPatterns-82slides.pdf </li></ul><ul><li>http://www.textolivre.com.br/artigos/17987-abordando-a-arquitetura-mvc-e-design-patterns-observer-composite-strategy?format=pdf </li></ul><ul><li>http://blog.rafaelcapucho.com/java/padroes-de-projeto-observer-modelagem-uml.html </li></ul><ul><li>http://pt.wikipedia.org/wiki/Observer </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  18. 18. Sites pesquisados: <ul><li>http://s2i.das.ufsc.br/tikiwiki/apresentacoes/padroes_de_projeto.pdf </li></ul><ul><li>http://www.noginfo.com.br/arquivos/CC_TEC_08.pdf </li></ul><ul><li>http://www.deinf.ufma.br/~vidal/observer.pdf </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo
  19. 19. Dupla: <ul><li>Juliana da Silva Cindra </li></ul><ul><li>[email_address] </li></ul><ul><li>Raquel Pereira Crespo </li></ul><ul><li>raquelpcrespo@gmail.com </li></ul>Juliana da Silva Cindra e Raquel Pereira Crespo

×