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.