Padrão de Projeto Mediator

12
Mediator Eder Carlos George Freire Wagner Castro UFRN INSTITUTO METRÓPOLE DIGITAL PÓS-GRADUAÇÃO/RESIDÊNCIA EM ENGENHARIA DE SOFTWARE Natal, outubro de 2013

description

Estudo sobre o Padrão de Projeto Mediator

Transcript of Padrão de Projeto Mediator

Page 1: Padrão de Projeto Mediator

MediatorEder Carlos

George Freire

Wagner Castro

UFRNINSTITUTO METRÓPOLE DIGITALPÓS-GRADUAÇÃO/RESIDÊNCIA EM ENGENHARIA DE SOFTWARE

Natal, outubro de 2013

Page 2: Padrão de Projeto Mediator

Sumário

• INTRODUÇÃO

• INTENÇÃO

• APLICABILIDADE

• ESTRUTURA

• VANTAGENS x DESVANTAGENS

• PADRÕES RELACIONADOS

• IMPLEMENTAÇÃO

• REFERÊNCIAS

Page 3: Padrão de Projeto Mediator

Introdução

PADRÕES DE PROJETO GOF

CRIACIONAIS

COMPORTAMENTAIS

ESTRUTURAIS

MEDIATOR

Page 4: Padrão de Projeto Mediator

Intenção

• “Definir um objeto que encapsula a forma como um conjuntode objetos interage. O Mediator promove o acoplamentofraco ao evitar que objetos se refiram uns aos outrosexplicitamente e permitir variar suas interaçõesindependentemente” (Gof).

• Exemplo: interações entre páginas web de um ecommerce.

Page 5: Padrão de Projeto Mediator

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.

Page 6: Padrão de Projeto Mediator

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;

Page 7: Padrão de Projeto Mediator

Estrutura

Page 8: Padrão de Projeto Mediator

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.

Page 9: Padrão de Projeto Mediator

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.

Page 10: Padrão de Projeto Mediator

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.

Page 11: Padrão de Projeto Mediator

Implementação - Chat

Page 12: Padrão de Projeto Mediator

Referências

• Design Patterns: Elements of Reusable Object-Oriented Software

• http://imasters.com.br/artigo/21642/dotnet/o-padrao-de-projeto-mediator-na-pratica/

• http://brizeno.wordpress.com/category/padroes-de-projeto/mediator/

• http://www.javacodegeeks.com/2013/08/mediator-design-pattern-in-java-example-tutorial.html