Nome e Classificação do Padrão
Mediator – Padrão Comportamental
Intenção e objetivo
Possui como objetivo encapsular a forma como vários outros objetos interagem
Motivação
Torna o desenvolvimento mais flexível, pois ao encapsular a forma como vários outros objetos interagem o Mediator dá oportunidade de alteração do código sem que isso afete as demais partes do objeto, pois os objetos são referenciados ao Mediator diminuindo o número de conexões entre eles.
Pode ser usado para manter a consistência da interface.
Pode ser usado para manter a consistência da interface.
Aplicabilidade
Quando um conjunto de objetos se comunicam entre si de forma complexa embora bem definido;
Quando está difícil refatorar algum código;
Quando temos objetos com muitas dependências
Estrutura
Participantes
O objeto Mediador gerencia todas as atividades das classes BtnTocar, BtnProcurar e BtnTransferir implementando um método de execução da interface Command
Colaborações
Command - define a interface para a comunicação entre os objetos próximos.
Mediator - implementa a interface e coordena a interação entre os objetos que estão ligados.
BtnTocar, BtnProcurar, BtnTransferir - se comunica com outros objetos através do mediator
Consequência
Simplifica a relação entre os objetos, transforma o protocolo de "any to any" para "one to any";
Ajuda a entender o funcionamento dos objetos abstraindo a forma na qual eles cooperam entre si;
Centraliza o comportamento;
Centraliza o comportamento;
Promove desacoplamento entre os objetos.
Implementação
Processo de um MP3 Player:
A classe principal executa o método MediatorDemo() na classe MediatorDemo que prepara o MP3 Player para execução e o deixa pronto para escutar, transferir ou procurar músicas, ao executar uma das funções é acionado um método específico dentro da classe Mediator.
Exemplos de Código
Link do projeto com o padrão Mediator
http://www.4shared.com/zip/Mcqbx6Op/Mediator1.html
Link do projeto sem o padrão Mediator
http://www.4shared.com/zip/naGFxEGp/Mediator2.html
http://www.4shared.com/zip/naGFxEGp/Mediator2.html
Usos Conhecidos
ET++
THINK C
Smalltalk
Padrões relacionados
Façade
Observer
Observer

