MEDIATOR Pattern

Lancez-Vous. C'est gratuit
ou s'inscrire avec votre adresse e-mail
MEDIATOR Pattern par Mind Map: MEDIATOR Pattern

1. 01. Intenção

1.1. Definir um objeto que encapsula a forma como um conjunto de objetos interage

1.2. O Mediator promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros explicitamente e permite variar suas interações independentemente

2. 02. Motivação

2.1. Usabilidade na OO

2.1.1. O particionamento de um sistema em muitos objetos em geral melhora a usabilidade

2.1.2. Mas a proliferação de interconexões pode atrapalhar

2.2. As relações entre as interfaces podem se tornar caóticas

2.2.1. Os elementos podem se comunicar indiretamente através do Mediator

2.3. Exemplo: Interdependencia entre widgets de um diálogo (UI)

2.3.1. Mediator é responsável por controlar e coordenar as interações de um conjunto de objetos

2.3.2. Exemplo de interação entre objetos usando mediator

3. 03. Aplicabilidade

3.1. Quando é difícil mudar algumas das classes porque elas estão firmemente acopladas a várias outras classes.

3.2. Quando você não pode reutilizar um componente em um programa diferente porque ele é muito dependente de outros componentes.

3.3. Quando você se encontrar criando um monte de subclasses para componentes apenas para reutilizar algum comportamento básico em vários contextos.

4. 04. Estrutura

4.1. Estrutura (livro)

4.2. Estrutura (guru refactoring)

5. 05. Participantes

5.1. Mediator

5.1.1. Define a interface de comunicação entre as classes colleague

5.2. ConcreteMediator

5.2.1. Implementa comportamento cooperativo através da coordenação das classes Colleague

5.2.2. Conhece e mantém as classes colleague

5.3. ColleagueClasses

5.3.1. Cada classe colleague conhece seu objeto Mediator de outra forma

5.3.2. Cada colega se comunica com o Mediator sempre que, de outra forma, teria que se comunicar com outro colega

6. 06. Colaborações

6.1. Colegas enviam e recebem solicitações de um objeto Mediator

6.2. O Mediator implementa o comportamento cooperativo pelo direcionamento das solicitações para os colegas apropriados

7. 07. Prós e Contras

7.1. Princípio de responsabilidade única.

7.2. Princípio aberto/fechado.

7.3. Você pode reduzir o acoplamento entre os vários componentes de um programa.

7.4. Você pode reutilizar componentes individuais mais facilmente.

7.5. Com o tempo um mediador pode evoluir para um Objeto Deus.

8. 08. Implementação

8.1. Omissão da classe abstrata Mediator

8.1.1. Não é necessário definir a classe abstrata Mediator, quando se utiliza apenas um Mediator

8.1.2. O acomplamento abstrato que a classe Mediator oferece permite aos colegas trabalharem com diferentes subclasses do Mediator, e vice-versa

8.2. Comunicação colleague-mediator

8.2.1. Colegas tem que se comunicar com o seu mediator quando ocorre um evento de interesse

8.2.2. Recomenda-se implementar o Mediator como um Observer usando o padrão Observer

8.2.2.1. Classes colegas funcionam como Subjects, mandando notificações para o Mediator

8.2.2.2. O mediator responde propagando os efeitos da mudança para outros colegas

9. 09. Padrões Relacionados

9.1. Chain of Responsibility, Command, Mediator e Observer

9.1.1. Abrangem várias maneiras de se conectar remetentes e destinatários de pedidos

9.2. Mediator x Facade

9.2.1. Eles tentam organizar uma colaboração entre classes firmemente acopladas.

9.2.2. O Facade define uma interface simplificada para um subsistema de objetos, mas ele não introduz qualquer nova funcionalidade.

9.2.3. O Mediator centraliza a comunicação entre componentes do sistema.

9.2.3.1. Os componentes só sabem do objeto mediador e não se comunicam diretamente.

9.3. Mediator x Observer

9.3.1. Mediator elimina dependências múltiplas entre um conjunto de componentes do sistema

9.3.2. Observer estabelece comunicações de uma via dinâmicas entre objetos, onde alguns deles agem como subordinados de outro

9.3.3. Mediator como um Observer

9.3.3.1. O objeto mediador faz o papel de um publicador

9.3.3.2. Os componentes agem como assinantes que inscrevem-se ou removem a inscrição aos eventos do mediador.

10. 10. Usos conhecidos

10.1. GUI Framework

10.1.1. Interação entre componentes de um formulário

10.2. Aplicações de Chat

10.2.1. Interação entre os participantes de um chat

10.3. Sistemas de Mensageria

10.3.1. Java Message Service (JMS)

10.3.2. Sistema de mensageria age como um Mediator

11. 11. Exemplo