padrões de projeto - observer

19
Juliana da Silva Cindra e Raquel Pereira Crespo Padrões de Projeto OBSERVER

Upload: juliana-cindra

Post on 29-Jun-2015

3.422 views

Category:

Technology


7 download

DESCRIPTION

Padrões de Projeto - Observer.

TRANSCRIPT

Page 1: Padrões de Projeto - Observer

Juliana da Silva Cindra e Raquel Pereira Crespo

Padrões de Projeto

OBSERVER

Page 2: Padrões de Projeto - Observer

Juliana da Silva Cindra e Raquel Pereira Crespo

Observer

Padrão comportamental Está na camada Model da Arquitetura MVC

Page 3: Padrões de Projeto - Observer

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.

Page 4: Padrões de Projeto - Observer

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.

Page 5: Padrões de Projeto - Observer

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.

Page 6: Padrões de Projeto - Observer

Juliana da Silva Cindra e Raquel Pereira Crespo

Motivação

Page 7: Padrões de Projeto - Observer

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.

Page 8: Padrões de Projeto - Observer

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.

Page 9: Padrões de Projeto - Observer

Juliana da Silva Cindra e Raquel Pereira Crespo

Estrutura

Page 10: Padrões de Projeto - Observer

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.

Page 11: Padrões de Projeto - Observer

Exemplo

Juliana da Silva Cindra e Raquel Pereira Crespo

Page 12: Padrões de Projeto - Observer

Exemplo

Juliana da Silva Cindra e Raquel Pereira Crespo

Page 13: Padrões de Projeto - Observer

Exemplo

Juliana da Silva Cindra e Raquel Pereira Crespo

Page 14: Padrões de Projeto - Observer

Exemplo

Juliana da Silva Cindra e Raquel Pereira Crespo

Page 15: Padrões de Projeto - Observer

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.

Page 16: Padrões de Projeto - Observer

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.

Page 17: Padrões de Projeto - Observer

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

Page 18: Padrões de Projeto - 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

Page 19: Padrões de Projeto - Observer

Juliana da Silva Cindra e Raquel Pereira Crespo

Dupla:

Juliana da Silva [email protected]

Raquel Pereira [email protected]