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

AngularJs presentation
AngularJs presentation AngularJs presentation
AngularJs presentation Phan Tuan
 
iOS architecture patterns
iOS architecture patternsiOS architecture patterns
iOS architecture patternsallanh0526
 
Design Pattern For C# Part 1
Design Pattern For C# Part 1Design Pattern For C# Part 1
Design Pattern For C# Part 1Shahzad
 
MVx patterns in iOS (MVC, MVP, MVVM)
MVx patterns in iOS (MVC, MVP, MVVM)MVx patterns in iOS (MVC, MVP, MVVM)
MVx patterns in iOS (MVC, MVP, MVVM)Yaroslav Voloshyn
 
Angular 6 Form Validation with Material
Angular 6 Form Validation with MaterialAngular 6 Form Validation with Material
Angular 6 Form Validation with MaterialMalika Munaweera
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architectureLilia Sfaxi
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency InjectionNir Kaufman
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API07.pallav
 
Conditional rendering
Conditional renderingConditional rendering
Conditional renderingDucat
 
Testando API REST - Parte 1
Testando API REST - Parte 1Testando API REST - Parte 1
Testando API REST - Parte 1alinebiath
 
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
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2teejug
 
MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentationG ABHISEK
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications AndroidLilia Sfaxi
 

Mais procurados (20)

Observer pattern
Observer patternObserver pattern
Observer pattern
 
AngularJs presentation
AngularJs presentation AngularJs presentation
AngularJs presentation
 
iOS architecture patterns
iOS architecture patternsiOS architecture patterns
iOS architecture patterns
 
Design Pattern For C# Part 1
Design Pattern For C# Part 1Design Pattern For C# Part 1
Design Pattern For C# Part 1
 
MVx patterns in iOS (MVC, MVP, MVVM)
MVx patterns in iOS (MVC, MVP, MVVM)MVx patterns in iOS (MVC, MVP, MVVM)
MVx patterns in iOS (MVC, MVP, MVVM)
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
Angular 6 Form Validation with Material
Angular 6 Form Validation with MaterialAngular 6 Form Validation with Material
Angular 6 Form Validation with Material
 
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Cours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxyCours design pattern m youssfi partie 6 proxy
Cours design pattern m youssfi partie 6 proxy
 
Software Engineering - chp5- software architecture
Software Engineering - chp5- software architectureSoftware Engineering - chp5- software architecture
Software Engineering - chp5- software architecture
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency Injection
 
Introducción a git y git hub
Introducción a git y git hubIntroducción a git y git hub
Introducción a git y git hub
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Conditional rendering
Conditional renderingConditional rendering
Conditional rendering
 
Testando API REST - Parte 1
Testando API REST - Parte 1Testando API REST - Parte 1
Testando API REST - Parte 1
 
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
 
Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2Une (simple) présentation de Apache Maven 2
Une (simple) présentation de Apache Maven 2
 
MVVM in iOS presentation
MVVM in iOS presentationMVVM in iOS presentation
MVVM in iOS presentation
 
Chp5 - Applications Android
Chp5 - Applications AndroidChp5 - Applications Android
Chp5 - Applications Android
 

Semelhante a Padrão de Projeto Observer

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 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
 

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