Padrões de Projeto - Observer
-
Upload
juliana-cindra -
Category
Technology
-
view
3.422 -
download
7
description
Transcript of Padrões de Projeto - Observer
Juliana da Silva Cindra e Raquel Pereira Crespo
Padrões de Projeto
OBSERVER
Juliana da Silva Cindra e Raquel Pereira Crespo
Observer
Padrão comportamental Está na camada Model da Arquitetura MVC
Juliana da Silva Cindra e Raquel Pereira Crespo
Intenção
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]
Permite que objetos interessados sejam avisados da mudança de estado ou outros eventos ocorrendo num outro objeto.
Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação
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.
Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação
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.
Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação
Juliana da Silva Cindra e Raquel Pereira Crespo
Motivação
Suponha que você deseja fornecer várias visões distintas de um mesmo objeto que funciona como um repositório de dados;
Cada visão é criada por um objeto observador independente; 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;
O padrão Observer descreve uma forma de manutenção destes relacionamentos de modo que observadores e repositórios sejam facilmente substituídos.
Juliana da Silva Cindra e Raquel Pereira Crespo
Aplicabilidade
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;
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;
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.
Juliana da Silva Cindra e Raquel Pereira Crespo
Estrutura
Juliana da Silva Cindra e Raquel Pereira Crespo
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.
Exemplo
Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo
Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo
Juliana da Silva Cindra e Raquel Pereira Crespo
Exemplo
Juliana da Silva Cindra e Raquel Pereira Crespo
Juliana da Silva Cindra e Raquel Pereira Crespo
Consequências
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;
Suporte a comunicação broadcast; Atualizações inesperadas.
Juliana da Silva Cindra e Raquel Pereira Crespo
Referência bibliográfica:
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.
Juliana da Silva Cindra e Raquel Pereira Crespo
Sites pesquisados:
http://www.mariosam.com/desenvolvimento/designpatterns/design-patterns-padrao-observer
http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/arqu/observer.htm
http://www.cic.unb.br/~jhcf/MyBooks/iess/Patterns/BehavioralPatterns-82slides.pdf
http://www.textolivre.com.br/artigos/17987-abordando-a-arquitetura-mvc-e-design-patterns-observer-composite-strategy?format=pdf
http://blog.rafaelcapucho.com/java/padroes-de-projeto-observer-modelagem-uml.html
http://pt.wikipedia.org/wiki/Observer
Juliana da Silva Cindra e Raquel Pereira Crespo
Sites pesquisados:
http://s2i.das.ufsc.br/tikiwiki/apresentacoes/padroes_de_projeto.pdf
http://www.noginfo.com.br/arquivos/CC_TEC_08.pdf http://www.deinf.ufma.br/~vidal/observer.pdf
Juliana da Silva Cindra e Raquel Pereira Crespo
Dupla:
Juliana da Silva [email protected]
Raquel Pereira [email protected]