Você está na página 1de 11

Observer

Compartilhamento de recursos de maneira


inteligente
Propósito
O Observer é um padrão de projeto comportamental
que permite que você defina um mecanismo de
assinatura para notificar múltiplos objetos sobre
quaisquer eventos que aconteçam com o objeto que
eles estão observando.
Problema, Solução e Estrutura
Imagine que você tem dois tipos de objetos: um
Cliente e uma Loja. O cliente está muito interessado
em uma marca particular de um produto (digamos que
seja um novo modelo de iPhone) que logo deverá estar
disponível na loja.

O cliente pode visitar a loja todos os dias e checar a


disponibilidade do produto. Mas enquanto o produto
ainda está a caminho, a maioria desses visitas serão em
vão.
Problema, Solução e Estrutura
Prós e contras
PRÓS CONTRAS
• Princípio aberto/fechado. Você pode • Assinantes são notificados em ordem
introduzir novas classes assinantes aleatória
sem ter que mudar o código da
publicadora (e vice versa se existe
uma interface publicadora).

• Você pode estabelecer relações entre


objetos durante a execução.
Mediator
Simplificador de relacionamentos complexos
Propósito
O Mediator é um padrão de projeto comportamental
que permite que você reduza as dependências caóticas
entre objetos. O padrão restringe comunicações diretas
entre objetos e os força a colaborar apenas através do
objeto mediador.
Problema, Solução e Estrutura
Digamos que você tem uma caixa de diálogo para criar
e editar perfis de clientes. Ela consiste em vários
controles de formulário tais como campos de texto,
caixas de seleção, botões, etc.

Alguns dos elementos do formulário podem interagir


com outros. Por exemplo, selecionando a caixa de “Eu
tenho um cão” pode revelar uma caixa de texto
escondida para inserir o nome do cão. Outro exemplo é
o botão enviar que tem que validar todos os campos
antes de salvar os dados.
Problema, Solução e Estrutura
Problema, Solução e Estrutura
Prós e contras
PRÓS CONTRAS
• Princípio de responsabilidade única. • Com o tempo um mediador pode
Você pode extrair as comunicações evoluir para um Objeto Deus.
entre vários componentes para um
único lugar, tornando as de mais fácil
entendimento e manutenção.

• Princípio aberto/fechado. Você pode


introduzir novos mediadores sem ter
que mudar os próprios componentes.

• Você pode reduzir o acoplamento


entre os vários componentes de um
programa.

• Você pode reutilizar componentes


individuais mais facilmente.

Você também pode gostar