padrão de projeto observer

18
Observer Padrão comportamental Programação Modular Professora: Anna Izabel Grupo: Alisson, Gustavo, Joanna, Luiza, Túlio

Upload: luiza-uira

Post on 29-Jun-2015

1.073 views

Category:

Documents


0 download

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

ObserverPadrão comportamental

Programação ModularProfessora: Anna Izabel

Grupo: Alisson, Gustavo, Joanna, Luiza, Túlio

Page 2: Padrão de Projeto Observer

“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

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

MVC

Page 4: Padrão de Projeto Observer

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

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

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

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
Page 9: Padrão de Projeto Observer

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

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

•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
Page 13: Padrão de Projeto Observer
Page 14: Padrão de Projeto Observer
Page 15: Padrão de Projeto Observer
Page 16: Padrão de Projeto Observer

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

Desvantagens

•O abuso pode causar sério impacto na performance. Sistemas onde todos notificam todos a cada mudança ficam inundados de requisições.