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