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

Model view controller (mvc)
Model view controller (mvc)Model view controller (mvc)
Model view controller (mvc)M Ahsan Khan
 
Web Development with Laravel 5
Web Development with Laravel 5Web Development with Laravel 5
Web Development with Laravel 5Soheil Khodayari
 
Ch6-Software Engineering 9
Ch6-Software Engineering 9Ch6-Software Engineering 9
Ch6-Software Engineering 9Ian Sommerville
 
Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer PatternMudasir Qazi
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosLeonardo Melo Santos
 
Comparación awt y java swing
Comparación awt y java swingComparación awt y java swing
Comparación awt y java swingsebastiangalindob
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVCKhaled Musaied
 
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
 
2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定
2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定
2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定Enpel
 
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
 
Design Patterns
Design PatternsDesign Patterns
Design Patternsfrgo
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systemsTim Staley
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao SwingArthur Emanuel
 
Como insertar un video en eclipse java
Como insertar un video en eclipse javaComo insertar un video en eclipse java
Como insertar un video en eclipse javaElizabeth Reyna
 
Design Patterns Presentation - Chetan Gole
Design Patterns Presentation -  Chetan GoleDesign Patterns Presentation -  Chetan Gole
Design Patterns Presentation - Chetan GoleChetan Gole
 

Mais procurados (20)

Model view controller (mvc)
Model view controller (mvc)Model view controller (mvc)
Model view controller (mvc)
 
Web Development with Laravel 5
Web Development with Laravel 5Web Development with Laravel 5
Web Development with Laravel 5
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Ch6-Software Engineering 9
Ch6-Software Engineering 9Ch6-Software Engineering 9
Ch6-Software Engineering 9
 
Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer Pattern
 
Conceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetosConceitos básicos de programação orientada a objetos
Conceitos básicos de programação orientada a objetos
 
Comparación awt y java swing
Comparación awt y java swingComparación awt y java swing
Comparación awt y java swing
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
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
 
2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定
2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定
2 TomcatによるWebアプリケーションサーバ構築 第1章 Tomcatのインストールと設定
 
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...
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
A brief introduction to version control systems
A brief introduction to version control systemsA brief introduction to version control systems
A brief introduction to version control systems
 
9.laravel
9.laravel9.laravel
9.laravel
 
Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)Design Patterns (Examples in .NET)
Design Patterns (Examples in .NET)
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Diagrama de sequência
Diagrama de sequênciaDiagrama de sequência
Diagrama de sequência
 
Dot NET Remoting
Dot NET RemotingDot NET Remoting
Dot NET Remoting
 
Como insertar un video en eclipse java
Como insertar un video en eclipse javaComo insertar un video en eclipse java
Como insertar un video en eclipse java
 
Design Patterns Presentation - Chetan Gole
Design Patterns Presentation -  Chetan GoleDesign Patterns Presentation -  Chetan Gole
Design Patterns Presentation - Chetan Gole
 

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