Padrões de Projeto
Mediator
Mediator
• Motivação
– Encapsular o comportamento coletivo num objeto mediador
– O mediador é responsável pelo controle e coordenação das
interações de um grupo de objetos
– Diminuir o número de interconexões entre os objetos
• Aplicabilidade
– A reutilização de um objeto é difícil porque ele referencia e se
comunica com muitos outros objetos
– Um conjunto de objetos se comunica de maneira bem-definida,
porém complexa. As interdependências resultantes são
desestruturadas e difíceis de entender
© LES/PUC-Rio
Mediator
• Estrutura
© LES/PUC-Rio
Mediator
• Participantes
– Mediator
• Define uma interface para comunicar com objetos da classe
Colleague
– ConcreteMediator
• Responsável por coordenar a comunicação entre os objetos da
classe Colleague
• Conhece e mantém todos os colegas
– Colleague classes
• Cada classe Colleague conhece seu objeto Mediator
• Cada colega se comunica com seu mediador quando quiser se
comunicar com outro colega
© LES/PUC-Rio
Mediator
• Consequências
– Limita o uso de subclasses
• Um mediador localiza o comportamento, de outra forma, estaria
distribuído entre vários objeto
– Desacopla colegas
• Um mediador promove um acoplamento fraco entre colegas
– Simplifica o protocolo dos objetos
• Um mediador substitui interações muitos-para-muitos por
interações um-para-muitos entre o mediador e seus colegas
• Relacionamentos um-para-muitos são mais fáceis de compreender,
manter e estender
© LES/PUC-Rio
Mediator
• Exemplo de código
© LES/PUC-Rio
Mediator
• Exemplo de código
© LES/PUC-Rio
Mediator
• Exemplo de código
© LES/PUC-Rio
Mediator
• Referências
– Padrões de Projeto – GoF
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J..Padrões de
Projeto: Soluções Reutilizáveis de Software Orientado a Objetos.
Trad. Luiz A. M. Salgado. – Porto Alegre: Bookman, 2000.
– The Mediator
http://pages.cpsc.ucalgary.ca/~heatond/mediator
– Mediator pattern
http://en.wikipedia.org/wiki/Mediator_pattern
– Mediator Design Pattern
http://sourcemaking.com/design_patterns/mediator
© LES/PUC-Rio
Download

Slide - (LES) da PUC-Rio