SlideShare a Scribd company logo
1 of 20
Universidade Federal de Sergipe
Departamento de Ciência da Computação
         Padrões de Software e Refatoração

                              Mediator

Alunos:
Arthur Lázaro da Silva Machado
Flávio Lima França
Jesse Fernandes Silva Rocha

Professor:
Dr. Alberto Costa Neto

                     São Cristóvão, 30 de Novembro de 2011
Motivação

Características:
• Propósito: comportamental

• Escopo: objeto

• Objetivos:
  • Criar um objeto que age como um       mediador
    controlando a interação entre um conjunto de
    objetos.
  • Diminuir o acoplamento entre os objetos, não
    deixando eles se referirem entre si de maneira
    explícita.
Motivação

• Como permitir que um grupo de objetos se
  comunique entre si sem que haja acoplamento
  entre eles?

• Como remover o forte acoplamento presente em
  relacionamentos muitos para muitos?

• Como permitir que novos participantes sejam
  ligados ao grupo facilmente?
Motivação
• Analogia com as torres de controle e os aviões nos
  aeroportos.
 ▫ Os aviões interagem com as torres de controle e não com
   eles mesmos.
 ▫ As torres de controle sabem exatamente onde cada avião
   está, qual a sua rota até o destino, momento de decolagem e
   aterrisagem.
Aplicabilidade

• É utilizado quando existe um grande número de
  objetos que se comunicam entre si de maneira bem
  definida, mas de forma complexa.

• Quando a reusabilidade de um objeto é
  comprometida pelo fato dele se comunicar com
  muitos outros objetos.

• Quando se deseja evitar a utilização excessiva de
  herança para distribuir o comportamento entre
  diversas classes.
Estrutura
Estrutura
Participantes

• Mediator (Mediador)
 ▫ Define uma interface que é responsável pela
   comunicação com os objetos Colleague.

• ConcreteMediator
 ▫ Implementa o comportamento cooperativo através
   da coordenação de objetos Colleague.
 ▫ É responsável por manter e conhecer o estado de
   seus objetos Colleague.
Participantes

• Classes Colleague (Colaboradores)
 ▫ Cada classe conhece seu objeto Mediator.

 ▫ Cada objeto Colleague comunica-se com o seu
   objeto Mediator, ao invés de se comunicar com
   outros objetos Colleagues.
Colaborações

• Colleagues enviam e recebem requisições do
  Mediator.

• Cabe ao Mediator implementar o comportamento
  cooperativo ao tratar o redirecionamento das
  requisições para os objetos Colleagues responsáveis.
Consequências

• A hierarquia de subclasses é limitada apenas à classe
  Mediator.

• Desacoplamento entre os Colleagues.

• Substitui o relacionamento de objetos de muitos-para-
  muitos por um-para-muitos.

• Abstração da interação entre os objetos.

• Centralização do comportamento (objeto monolítico).
Implementação

• Quando existe apenas um Mediator interagindo com as
  classes Colleagues, então a classe abstrata Mediator
  pode ser omitida.

• As classes Colleagues se comunicam com o Mediator
  quando ocorre um evento de interesse.
Padrões Relacionados
• Facade
 ▫ Um mediator simplificado torna-se um padrão Facade se o
   mediador for a única classe ativa e se as classes Colleagues forem
   classes passivas.

• Adapter
 ▫     O padrão Mediator apenas media os pedidos entre as
     classes Colleague.


• Observer
 ▫ Pode implementar a comunicação entre Mediators e Colleagues
   no padrão Mediator.
Vantagens e Desvantagens
• Vantagens
 ▫ Desacoplamento entre os diversos participantes da rede de
   comunicação (participantes não se conhecem);
 ▫ Eliminação de relacionamentos muitos para muitos (são
   todos substituídos por relacionamentos um para muitos);
 ▫ A política de comunicações está centralizada no mediador e
   pode ser alterada sem mexer nos colaboradores.

• Desvantagens
 ▫ A centralização pode ser uma fonte de gargalos de
   desempenho e de risco para o sistema em caso de falha;
 ▫ Na prática, os mediadores tendem a se tornar mais
   complexos.
Exemplo 1
  Jogos
  - RPG
  - Luta
  - Navegação Web

1. Identifica que houve
   uma colisão.
2. Analisa o poder do
   golpe de Ken.
3. Analisa força da defesa
   de Ryu.
4. Calcula o dano.
5. Configura essa
   informação no
   personagem.
Exemplo 2
Exemplo 3

• Interação entre componentes de uma janela
  utilizando a biblioteca SWING do Java.

• Participantes:
 ▫   Mediator
 ▫   Botões
 ▫   Label
 ▫   Comando (Executa uma ação quando um botão é
     clicado).
Exemplo 3
Diagrama UML
Exemplo 3



Interface
Ao clicar em um botão é executado o comando associado a ele no
Mediator.
Os elementos da interface não interagem entre si.
O Mediator conhece todos os objetos e implementa o comportamento
deles.
As requisições são feitas dos botões para o Mediator.
Referências
• http://abrindoojogo.com.br/padroes-de-projeto-para-games-mediador

• http://imasters.com.br/artigo/21642/dotnet/o-padrao-de-projeto-mediator-na-
  pratica

• http://s2i.das.ufsc.br/tikiwiki/apresentacoes/padroes_de_projeto.pdf

• http://www.allapplabs.com/java_design_patterns/mediator_pattern.htm

• http://pt.appbrain.com/app/air-control-lite/dk.logisoft.aircontrol

More Related Content

What's hot

Schema Design
Schema DesignSchema Design
Schema Design
MongoDB
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de software
leopp
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
soncino
 

What's hot (20)

Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Aula07 - Sistemas Distribuídos - Aula de Revisão da NP1
Aula07 - Sistemas Distribuídos - Aula de Revisão da NP1Aula07 - Sistemas Distribuídos - Aula de Revisão da NP1
Aula07 - Sistemas Distribuídos - Aula de Revisão da NP1
 
Schema Design
Schema DesignSchema Design
Schema Design
 
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)
 
Diagrama de Classe: Relacionamento de Composição
Diagrama de Classe: Relacionamento de ComposiçãoDiagrama de Classe: Relacionamento de Composição
Diagrama de Classe: Relacionamento de Composição
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de software
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Desafios do trabalho em Rede para Gestão da Informação e Conhecimento
Desafios do trabalho em Rede para Gestão da Informação e ConhecimentoDesafios do trabalho em Rede para Gestão da Informação e Conhecimento
Desafios do trabalho em Rede para Gestão da Informação e Conhecimento
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Princípio Law Of Demeter (LOD)
Princípio Law Of Demeter (LOD)Princípio Law Of Demeter (LOD)
Princípio Law Of Demeter (LOD)
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Modelagem de casos de uso e diagramas de sequência
Modelagem de casos de uso e diagramas de sequênciaModelagem de casos de uso e diagramas de sequência
Modelagem de casos de uso e diagramas de sequência
 
Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Bootstrap praticas mais usadas
Bootstrap praticas mais usadas
 
Aula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para WebAula 1 - Programação Dinâmica para Web
Aula 1 - Programação Dinâmica para Web
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídosAula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
Aula03 Sistemas Distribuídos - Arquiteturas de sistemas distribuídos
 
Exercicios - Java Swing
Exercicios - Java SwingExercicios - Java Swing
Exercicios - Java Swing
 
Diagrama sequencia
Diagrama sequenciaDiagrama sequencia
Diagrama sequencia
 

Similar to Mediator Padrão de Projeto

Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
Evandro Agnes
 

Similar to Mediator Padrão de Projeto (20)

mediator-140416223151-phpapp02.pdf
mediator-140416223151-phpapp02.pdfmediator-140416223151-phpapp02.pdf
mediator-140416223151-phpapp02.pdf
 
Padrão de Projeto Mediator
Padrão de Projeto MediatorPadrão de Projeto Mediator
Padrão de Projeto Mediator
 
Aula 04.pdf
Aula 04.pdfAula 04.pdf
Aula 04.pdf
 
Gof mediator pattern
Gof   mediator patternGof   mediator pattern
Gof mediator pattern
 
Seminario sma,abms e netlogo
Seminario   sma,abms e netlogoSeminario   sma,abms e netlogo
Seminario sma,abms e netlogo
 
Sld 4
Sld 4Sld 4
Sld 4
 
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao ContextoSistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
Sistemas Multiagentes e Sistemas Distribuídos Sensíveis ao Contexto
 
Paradigma de orientação a objetos -
Paradigma de orientação a objetos - Paradigma de orientação a objetos -
Paradigma de orientação a objetos -
 
Padrões de Projeto para Jogos
Padrões de Projeto para JogosPadrões de Projeto para Jogos
Padrões de Projeto para Jogos
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e Estrategias
 
Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2
 
POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
 
Fundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetosFundamentos e princípios do projeto orientado a objetos
Fundamentos e princípios do projeto orientado a objetos
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
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
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Worshop w3i ars p fidalgo
Worshop w3i ars p fidalgoWorshop w3i ars p fidalgo
Worshop w3i ars p fidalgo
 
Aula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdfAula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdf
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
Orientacao a Objetos
Orientacao a ObjetosOrientacao a Objetos
Orientacao a Objetos
 

Recently uploaded

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Recently uploaded (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Mediator Padrão de Projeto

  • 1. Universidade Federal de Sergipe Departamento de Ciência da Computação Padrões de Software e Refatoração Mediator Alunos: Arthur Lázaro da Silva Machado Flávio Lima França Jesse Fernandes Silva Rocha Professor: Dr. Alberto Costa Neto São Cristóvão, 30 de Novembro de 2011
  • 2. Motivação Características: • Propósito: comportamental • Escopo: objeto • Objetivos: • Criar um objeto que age como um mediador controlando a interação entre um conjunto de objetos. • Diminuir o acoplamento entre os objetos, não deixando eles se referirem entre si de maneira explícita.
  • 3. Motivação • Como permitir que um grupo de objetos se comunique entre si sem que haja acoplamento entre eles? • Como remover o forte acoplamento presente em relacionamentos muitos para muitos? • Como permitir que novos participantes sejam ligados ao grupo facilmente?
  • 4. Motivação • Analogia com as torres de controle e os aviões nos aeroportos. ▫ Os aviões interagem com as torres de controle e não com eles mesmos. ▫ As torres de controle sabem exatamente onde cada avião está, qual a sua rota até o destino, momento de decolagem e aterrisagem.
  • 5. Aplicabilidade • É utilizado quando existe um grande número de objetos que se comunicam entre si de maneira bem definida, mas de forma complexa. • Quando a reusabilidade de um objeto é comprometida pelo fato dele se comunicar com muitos outros objetos. • Quando se deseja evitar a utilização excessiva de herança para distribuir o comportamento entre diversas classes.
  • 8. Participantes • Mediator (Mediador) ▫ Define uma interface que é responsável pela comunicação com os objetos Colleague. • ConcreteMediator ▫ Implementa o comportamento cooperativo através da coordenação de objetos Colleague. ▫ É responsável por manter e conhecer o estado de seus objetos Colleague.
  • 9. Participantes • Classes Colleague (Colaboradores) ▫ Cada classe conhece seu objeto Mediator. ▫ Cada objeto Colleague comunica-se com o seu objeto Mediator, ao invés de se comunicar com outros objetos Colleagues.
  • 10. Colaborações • Colleagues enviam e recebem requisições do Mediator. • Cabe ao Mediator implementar o comportamento cooperativo ao tratar o redirecionamento das requisições para os objetos Colleagues responsáveis.
  • 11. Consequências • A hierarquia de subclasses é limitada apenas à classe Mediator. • Desacoplamento entre os Colleagues. • Substitui o relacionamento de objetos de muitos-para- muitos por um-para-muitos. • Abstração da interação entre os objetos. • Centralização do comportamento (objeto monolítico).
  • 12. Implementação • Quando existe apenas um Mediator interagindo com as classes Colleagues, então a classe abstrata Mediator pode ser omitida. • As classes Colleagues se comunicam com o Mediator quando ocorre um evento de interesse.
  • 13. Padrões Relacionados • Facade ▫ Um mediator simplificado torna-se um padrão Facade se o mediador for a única classe ativa e se as classes Colleagues forem classes passivas. • Adapter ▫ O padrão Mediator apenas media os pedidos entre as classes Colleague. • Observer ▫ Pode implementar a comunicação entre Mediators e Colleagues no padrão Mediator.
  • 14. Vantagens e Desvantagens • Vantagens ▫ Desacoplamento entre os diversos participantes da rede de comunicação (participantes não se conhecem); ▫ Eliminação de relacionamentos muitos para muitos (são todos substituídos por relacionamentos um para muitos); ▫ A política de comunicações está centralizada no mediador e pode ser alterada sem mexer nos colaboradores. • Desvantagens ▫ A centralização pode ser uma fonte de gargalos de desempenho e de risco para o sistema em caso de falha; ▫ Na prática, os mediadores tendem a se tornar mais complexos.
  • 15. Exemplo 1 Jogos - RPG - Luta - Navegação Web 1. Identifica que houve uma colisão. 2. Analisa o poder do golpe de Ken. 3. Analisa força da defesa de Ryu. 4. Calcula o dano. 5. Configura essa informação no personagem.
  • 17. Exemplo 3 • Interação entre componentes de uma janela utilizando a biblioteca SWING do Java. • Participantes: ▫ Mediator ▫ Botões ▫ Label ▫ Comando (Executa uma ação quando um botão é clicado).
  • 19. Exemplo 3 Interface Ao clicar em um botão é executado o comando associado a ele no Mediator. Os elementos da interface não interagem entre si. O Mediator conhece todos os objetos e implementa o comportamento deles. As requisições são feitas dos botões para o Mediator.
  • 20. Referências • http://abrindoojogo.com.br/padroes-de-projeto-para-games-mediador • http://imasters.com.br/artigo/21642/dotnet/o-padrao-de-projeto-mediator-na- pratica • http://s2i.das.ufsc.br/tikiwiki/apresentacoes/padroes_de_projeto.pdf • http://www.allapplabs.com/java_design_patterns/mediator_pattern.htm • http://pt.appbrain.com/app/air-control-lite/dk.logisoft.aircontrol