Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelagem de Padrões de Projeto Aula 30 - Observer Observer (aka Observador, Assinante do evento, Event-Subscriber, Escutador ou Listener) Criacionais Ilustrações: SHVETS (2022) Prototype Abstract Factory Builder Factory Method Singleton Command Comportamentais Chain of Responsibility Memento Observer Visitor Template Method Iterator State Strategy Mediator ✓ ✓ ✓ ✓ ✓ ✓ ✓ Estruturais Adapter Flyweight Bridge FacadeDecorator Composite Proxy ✓ ✓ ✓ ✓ ✓✓ ✓ ✓ ✓ ● É um padrão de projeto desenhado para evitar que objetos dentro de uma aplicação executem espera ativa (em loop) esperando determinado evento acontecer. ● Ao invés, define um mecanismo de assinatura em que uma classe publicadora avisa seus assinantes quando algum evento de interesse acontece. Imagem de kjpargeter no Freepik Definição Imagem de kjpargeter no Freepik Exemplo - feed de notícias Imagem de kjpargeter no Freepik Estrutura: Observer A classe Publicadora manda eventos de interesse para outros objetos. Esses eventos ocorrem quando a publicadora muda seu estado ou executa algum comportamento. As publicadoras contêm uma infraestrutura de inscrição que permite novos assinantes se juntar aos atuais assinantes ou deixar a lista. Fonte: SHVETS (2022) Imagem de kjpargeter no Freepik Estrutura: Observer Quando um novo evento acontece, a publicadora percorre a lista de assinantes e chama o método de notificação declarado na interface do assinante em cada objeto assinante. Fonte: SHVETS (2022) Imagem de kjpargeter no Freepik Estrutura: Observer A interface Assinante declara a interface de notificação. Na maioria dos casos ela consiste de um único método atualizar() . O método pode ter vários parâmetros que permite que a publicadora passe alguns detalhes do evento junto com a atualização. Fonte: SHVETS (2022) Imagem de kjpargeter no Freepik Estrutura: Observer Geralmente, assinantes precisam de alguma informação contextual para lidar com a atualização corretamente. Por esse motivo, as publicadoras quase sempre passam algum dado de contexto como argumentos do método de notificação. A publicadora pode passar a si mesmo como um argumento, permitindo que o assinante recupere quaisquer dados diretamente. Fonte: SHVETS (2022) Im ag em d e F re ep ik Es tu do d e ca so ✓ Aberto/fechado: Novas classes assinantes podem ser criadas sem depender de mudanças nos assinantes já implementados. ✓ Possibilita a criação de relações entre objetos em tempo de execução. Im ag em d e p ik is u p er st ar n o F re ep ik Vantagens de utilizar Observer ✖ Notificação dos assinantes aleatoriamente. Atividade 38 Modele em UML o padrão observer que implementa uma classe MaintenancePublisher que avisa instâncias de Mechanic (assinante) sobre manutenções de aeronaves. Os tipos de notificações serão EmailMechanic e SMSMechanic que serão ativadas conforme a importância da manutenção pendente. D úv id as ? Referências SHVETS, Alexander. Mergulho nos Padrões de Projeto. Edição 2023-1.24. Kyiv: Refactoring.guru. 2022.
Compartilhar