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.