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

MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentationG ABHISEK
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel frameworkAhmad Fatoni
 
Android resources
Android resourcesAndroid resources
Android resourcesma-polimi
 
Instalación de Espa biblio en mi computador
Instalación de Espa biblio en mi computadorInstalación de Espa biblio en mi computador
Instalación de Espa biblio en mi computadorEliana Oyarce
 
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
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Dilouar Hossain
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to ReactRob Quick
 
Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Vikas Chauhan
 
Servlet and Servlet Life Cycle
Servlet and Servlet Life CycleServlet and Servlet Life Cycle
Servlet and Servlet Life CycleDhrumil Panchal
 

Mais procurados (20)

MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentation
 
Mediator Design Pattern
Mediator Design PatternMediator Design Pattern
Mediator Design Pattern
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
 
Android resources
Android resourcesAndroid resources
Android resources
 
Instalación de Espa biblio en mi computador
Instalación de Espa biblio en mi computadorInstalación de Espa biblio en mi computador
Instalación de Espa biblio en mi computador
 
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
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
 
Recyclerview in action
Recyclerview in action Recyclerview in action
Recyclerview in action
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
 
Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1Laravel Beginners Tutorial 1
Laravel Beginners Tutorial 1
 
Cloudhub and Mule
Cloudhub and MuleCloudhub and Mule
Cloudhub and Mule
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Servlet and Servlet Life Cycle
Servlet and Servlet Life CycleServlet and Servlet Life Cycle
Servlet and Servlet Life Cycle
 
Laravel
LaravelLaravel
Laravel
 
Backend roadmap
Backend roadmapBackend roadmap
Backend roadmap
 
Tech Talk on ReactJS
Tech Talk on ReactJSTech Talk on ReactJS
Tech Talk on ReactJS
 

Semelhante a Observer Padrão: Notificação Automática

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 Observer Padrão: Notificação Automática (20)

Padroes de Projeto
Padroes de ProjetoPadroes de Projeto
Padroes de Projeto
 
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
 
Portifolio
PortifolioPortifolio
Portifolio
 

Observer Padrão: Notificação Automática

  • 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