SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Aula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasAula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasVictor Hazin da Rocha
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine LearningSandro Moreira
 
Arquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosArquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosPortal_do_Estudante_SD
 
Tutorial de introducao as mascaras
Tutorial de introducao as mascarasTutorial de introducao as mascaras
Tutorial de introducao as mascarasLeonardo Pereira
 
Aula 3. frameworks front end
Aula 3. frameworks front endAula 3. frameworks front end
Aula 3. frameworks front endandreluizlc
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IPPjpilin
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance상현 조
 
Projetos Estruturados de Redes - Parte 5
Projetos Estruturados de Redes - Parte 5Projetos Estruturados de Redes - Parte 5
Projetos Estruturados de Redes - Parte 5José Wagner Bungart
 
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 NP1Messias Batista
 
Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.Rodrigo Miranda
 
Instalações prediais 2015 carlos eduardov3
Instalações prediais 2015 carlos eduardov3Instalações prediais 2015 carlos eduardov3
Instalações prediais 2015 carlos eduardov3Carlos Melo
 
Serverless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable FunctionsServerless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable FunctionsCallon Campbell
 

La actualidad más candente (20)

Aula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a FalhasAula de Sistemas Distribuídos - Tolerância a Falhas
Aula de Sistemas Distribuídos - Tolerância a Falhas
 
Introdução a Machine Learning
Introdução a Machine LearningIntrodução a Machine Learning
Introdução a Machine Learning
 
Diagrama sequencia
Diagrama sequenciaDiagrama sequencia
Diagrama sequencia
 
Arquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidosArquitectura e modelos de sistemas distribuidos
Arquitectura e modelos de sistemas distribuidos
 
Tutorial de introducao as mascaras
Tutorial de introducao as mascarasTutorial de introducao as mascaras
Tutorial de introducao as mascaras
 
Aula 3. frameworks front end
Aula 3. frameworks front endAula 3. frameworks front end
Aula 3. frameworks front end
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IP
 
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - PerfornanceGCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
GCGC- CGCII 서버 엔진에 적용된 기술 (2) - Perfornance
 
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
CONEXÃO BANCO DE DADOS MYSQL  COM JAVACONEXÃO BANCO DE DADOS MYSQL  COM JAVA
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
 
Projetos Estruturados de Redes - Parte 5
Projetos Estruturados de Redes - Parte 5Projetos Estruturados de Redes - Parte 5
Projetos Estruturados de Redes - Parte 5
 
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
 
PROTEÇÃO DIGITAL
PROTEÇÃO DIGITALPROTEÇÃO DIGITAL
PROTEÇÃO DIGITAL
 
Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.Computação em nuvem (cloud computing), uma introdução.
Computação em nuvem (cloud computing), uma introdução.
 
3 manual instalacao eletrica
3 manual instalacao eletrica3 manual instalacao eletrica
3 manual instalacao eletrica
 
Trabalho: Rede sem fio.
Trabalho: Rede sem fio.Trabalho: Rede sem fio.
Trabalho: Rede sem fio.
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Instalações prediais 2015 carlos eduardov3
Instalações prediais 2015 carlos eduardov3Instalações prediais 2015 carlos eduardov3
Instalações prediais 2015 carlos eduardov3
 
Serverless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable FunctionsServerless Orchestration with Azure Durable Functions
Serverless Orchestration with Azure Durable Functions
 
Arranjo de subestação
Arranjo de subestaçãoArranjo de subestação
Arranjo de subestação
 
Servidor proxy
Servidor proxy Servidor proxy
Servidor proxy
 

Similar a Mediator Padrão de Projeto

mediator-140416223151-phpapp02.pdf
mediator-140416223151-phpapp02.pdfmediator-140416223151-phpapp02.pdf
mediator-140416223151-phpapp02.pdfJandersonAzevedo5
 
Seminario sma,abms e netlogo
Seminario   sma,abms e netlogoSeminario   sma,abms e netlogo
Seminario sma,abms e netlogoDiogo Winck
 
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 ContextoHelio Henrique L. C. Monte-Alto
 
Paradigma de orientação a objetos -
Paradigma de orientação a objetos - Paradigma de orientação a objetos -
Paradigma de orientação a objetos - André Victor
 
TDD Projeto e Estrategias
TDD Projeto e EstrategiasTDD Projeto e Estrategias
TDD Projeto e EstrategiasEduardo Mendes
 
Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2Desenvolvimento iOS - Aula 2
Desenvolvimento iOS - Aula 2Saulo Arruda
 
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 InterfaceFelipe J. R. Vieira
 
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 objetosEvandro Agnes
 
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 AndroidIury Teixeira
 
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
 
Aula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdfAula - Redes peer to peer.pdf
Aula - Redes peer to peer.pdfMarcondesTiburcio
 
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 ObjetosRamon Mayor Martins
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introduçãoelliando dias
 

Similar a Mediator Padrão de Projeto (20)

mediator-140416223151-phpapp02.pdf
mediator-140416223151-phpapp02.pdfmediator-140416223151-phpapp02.pdf
mediator-140416223151-phpapp02.pdf
 
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
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 

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