- O documento discute o padrão de projeto Mediator, que define um objeto mediador para encapsular a interação entre um conjunto de objetos, promovendo o acoplamento fraco entre eles.
- O Mediator centraliza a comunicação entre objetos Colleague, coordenando seu comportamento cooperativo e permitindo variar suas interações independentemente.
- Exemplos de aplicabilidade incluem sistemas com comunicação complexa entre objetos e quando é necessário personalizar o comportamento distribuído entre classes sem excesso de subclasses.
4. Intenção
• “Definir um objeto que encapsula a forma como um conjunto
de objetos interage. O Mediator promove o acoplamento
fraco ao evitar que objetos se refiram uns aos outros
explicitamente e permitir variar suas interações
independentemente” (Gof).
• Exemplo: interações entre páginas web de um ecommerce.
5. Intenção
• Atua como mediador entre relacionamentos “muitos para
muitos”, concentrando a maneira como os objetos interagem.
• Exemplo: Inúmeros embarques e desembarques gerenciados
por um Centro Controlador de Tráfego Aéreo.
6. Aplicabilidade
• Quando um conjunto de objetos se comunica entre si de
modo bem definido , mas complexo;
• Quando é difícil reusar um objeto porque ele se comunica
com muitos outros objetos ;
• Quando o comportamento distribuído entre diversas classes
deve ser personalizado sem excesso de subclasses;
• Exemplos:
• Muito útil para programadores Visual Basic (principalmente das
versões 5 e 6), pois ele é um atalho para a falta de herança.
• Java Message Service (JMS);
• Java.util.Timer class scheduleXXX() methods;
• Java Concurrency Executor execute () method;
• Java.lang.reflect.Method invoke() method;
8. Estrutura
• Mediator:
• Define uma interface de comunicação com objetos da classe
Colleague;
• Concrete Mediator:
• Faz a implementação do comportamento cooperativo através da
coordenação de objetos Colleague;
• Responsável por manter e conhecer os objetos da classe
Colleague.
• Colleague Classes:
• Cada classe conhece seu mediador;
• Os objetos Colleague se comunicam com seu objeto Mediator, ao
invés de se comunicar com outros objetos Colleagues.
9. Vantagens x 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.
10. 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: Os padrões Mediator e Observer são
semelhantes, resolvendo o mesmo problema.