SlideShare uma empresa Scribd logo
1 de 18
Observer
     Padrão comportamental



                                   Programação Modular
                                  Professora: Anna Izabel
                        Grupo: Alisson, Gustavo, Joanna,
                                              Luiza, Túlio
“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.
• Padrão comportamental
• Está na camada Model da Arquitetura MVC
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 Pattern
Observer Pattern
Composite Pattern
Motivação
• Um objeto que possua agregações deve permitir
  que seus elementos sejam acessados sem que
  sua estrutura interna seja exposta.
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.
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.
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.
Como implementar?
• 1) Identificar os objetos que desejam ser
  notificados – OBSERVADORES
• 2) Todos devem obedecer à mesma interface
• 3) O observador deve saber o que observar. O
  observado não precisa saber quem observa.

Para isso, os observadores registram-se no
observado.
                                      Notificar varre
                                        a lista de
• -Adicionar();                       observadores
• -Remover();
• -Notificar();

• -Atualizar();
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.
Desvantagens
• O abuso pode causar sério impacto na
  performance.    Sistemas  onde  todos
  notificam todos a cada mudança ficam
  inundados de requisições.
Referências Bibliográficas
• http://www.slideshare.net/jucindra/padres-de-
  projeto-observer

• http://www.gfsolucoes.net/trabalhos/padroes_
  de_projetos.pdf

Mais conteúdo relacionado

Mais procurados

Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Cadeia alimentar e fluxo de energia
Cadeia alimentar e fluxo de energiaCadeia alimentar e fluxo de energia
Cadeia alimentar e fluxo de energiaÉrika Cardozo
 
Cartilha Sobre Boa Práticas para serviços de alimentação
Cartilha Sobre Boa Práticas para serviços de alimentaçãoCartilha Sobre Boa Práticas para serviços de alimentação
Cartilha Sobre Boa Práticas para serviços de alimentaçãoPriscilla Meira
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)Daniela Nunes
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoLuis Ferreira
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 
Boas Praticas e Procedimentos Operacionais Padrão para Alimentos
Boas Praticas e Procedimentos Operacionais Padrão para AlimentosBoas Praticas e Procedimentos Operacionais Padrão para Alimentos
Boas Praticas e Procedimentos Operacionais Padrão para AlimentosSafia Naser
 
3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento3 - Modelo Entidade Relacionamento
3 - Modelo Entidade RelacionamentoCris Fidelix
 
Higiene e segurança alimentar vol-2.pdf
Higiene e segurança alimentar vol-2.pdfHigiene e segurança alimentar vol-2.pdf
Higiene e segurança alimentar vol-2.pdfFrancisco Veiga
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Conceito e principios do sistema de movimentação de materiais
Conceito e principios do sistema de movimentação de materiaisConceito e principios do sistema de movimentação de materiais
Conceito e principios do sistema de movimentação de materiaisDiegoIsraelSantos
 

Mais procurados (20)

O sistema de transportes
O sistema de transportesO sistema de transportes
O sistema de transportes
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Garcom - treinamento
Garcom - treinamento Garcom - treinamento
Garcom - treinamento
 
Cadeia alimentar e fluxo de energia
Cadeia alimentar e fluxo de energiaCadeia alimentar e fluxo de energia
Cadeia alimentar e fluxo de energia
 
Cartilha Sobre Boa Práticas para serviços de alimentação
Cartilha Sobre Boa Práticas para serviços de alimentaçãoCartilha Sobre Boa Práticas para serviços de alimentação
Cartilha Sobre Boa Práticas para serviços de alimentação
 
Saa s software como serviço (slides)
Saa s   software como serviço (slides)Saa s   software como serviço (slides)
Saa s software como serviço (slides)
 
Princípios S.O.L.I.D.
Princípios S.O.L.I.D.Princípios S.O.L.I.D.
Princípios S.O.L.I.D.
 
Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
JSP: Introdução Parte 1
JSP: Introdução Parte 1JSP: Introdução Parte 1
JSP: Introdução Parte 1
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Módulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informaçãoMódulo 12 - Introdução aos sistemas de informação
Módulo 12 - Introdução aos sistemas de informação
 
Bancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geralBancos de dados NoSQL: uma visão geral
Bancos de dados NoSQL: uma visão geral
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 
Boas Praticas e Procedimentos Operacionais Padrão para Alimentos
Boas Praticas e Procedimentos Operacionais Padrão para AlimentosBoas Praticas e Procedimentos Operacionais Padrão para Alimentos
Boas Praticas e Procedimentos Operacionais Padrão para Alimentos
 
3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento3 - Modelo Entidade Relacionamento
3 - Modelo Entidade Relacionamento
 
Higiene e segurança alimentar vol-2.pdf
Higiene e segurança alimentar vol-2.pdfHigiene e segurança alimentar vol-2.pdf
Higiene e segurança alimentar vol-2.pdf
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Conceito e principios do sistema de movimentação de materiais
Conceito e principios do sistema de movimentação de materiaisConceito e principios do sistema de movimentação de materiais
Conceito e principios do sistema de movimentação de materiais
 
Vantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidoresVantagens__Desvantagens_Tipos_de_servidores
Vantagens__Desvantagens_Tipos_de_servidores
 

Semelhante a Padrão de Projeto Observer

Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyJoão Carlos Ottobboni
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetosGustavo Souza
 
[Software Design Pattern] - Dependency Injection
[Software Design Pattern] - Dependency Injection[Software Design Pattern] - Dependency Injection
[Software Design Pattern] - Dependency InjectionBruno Brandes
 
342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdf342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdfGabrielMarchesan
 
Intro oca,ocp 6 & 7, oo basics
Intro   oca,ocp 6 & 7, oo basicsIntro   oca,ocp 6 & 7, oo basics
Intro oca,ocp 6 & 7, oo basicsJuarez Junior
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosHélio Jovo
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Lucas Furtado de Oliveira
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoEngenharia de Software Ágil
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrThiago Boufleuhr
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Henrique Gabriel Gularte Pereira
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
boas praticas
boas praticasboas praticas
boas praticaslcbj
 
Relatório geral pi
Relatório geral piRelatório geral pi
Relatório geral piredesinforma
 

Semelhante a Padrão de Projeto Observer (20)

Padroes de Projeto
Padroes de ProjetoPadroes de Projeto
Padroes de Projeto
 
Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e Strategy
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
[Software Design Pattern] - Dependency Injection
[Software Design Pattern] - Dependency Injection[Software Design Pattern] - Dependency Injection
[Software Design Pattern] - Dependency Injection
 
342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdf342336684-GSI030-Aula08-projetoImplementacao.pdf
342336684-GSI030-Aula08-projetoImplementacao.pdf
 
Intro oca,ocp 6 & 7, oo basics
Intro   oca,ocp 6 & 7, oo basicsIntro   oca,ocp 6 & 7, oo basics
Intro oca,ocp 6 & 7, oo basics
 
desafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidosdesafios na implementacao de sistemas distribuidos
desafios na implementacao de sistemas distribuidos
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
 
OCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechadoOCP - The Open Close Principle - Princípio aberto/fechado
OCP - The Open Close Principle - Princípio aberto/fechado
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
boas praticas
boas praticasboas praticas
boas praticas
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Objectory
ObjectoryObjectory
Objectory
 
Travalho versao final
Travalho versao finalTravalho versao final
Travalho versao final
 
Relatório geral pi
Relatório geral piRelatório geral pi
Relatório geral pi
 

Padrão de Projeto Observer

  • 1. Observer Padrão comportamental Programação Modular Professora: Anna Izabel Grupo: Alisson, Gustavo, Joanna, Luiza, Túlio
  • 2. “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.
  • 3. • Padrão comportamental • Está na camada Model da Arquitetura MVC
  • 4. 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 Pattern Observer Pattern Composite Pattern
  • 5. Motivação • Um objeto que possua agregações deve permitir que seus elementos sejam acessados sem que sua estrutura interna seja exposta.
  • 6. 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.
  • 7. 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.
  • 8.
  • 9. 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.
  • 10. Como implementar? • 1) Identificar os objetos que desejam ser notificados – OBSERVADORES • 2) Todos devem obedecer à mesma interface
  • 11. • 3) O observador deve saber o que observar. O observado não precisa saber quem observa. Para isso, os observadores registram-se no observado. Notificar varre a lista de • -Adicionar(); observadores • -Remover(); • -Notificar(); • -Atualizar();
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. 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.
  • 17. Desvantagens • O abuso pode causar sério impacto na performance. Sistemas onde todos notificam todos a cada mudança ficam inundados de requisições.
  • 18. Referências Bibliográficas • http://www.slideshare.net/jucindra/padres-de- projeto-observer • http://www.gfsolucoes.net/trabalhos/padroes_ de_projetos.pdf