Padrões de Projeto Mediator
Mediator Motivação Aplicabilidade 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 ConcreteMediator Colleague classes 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 Desacopla colegas 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 The Mediator 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