Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelagem de Padrões de Projeto Aula 36 - Chain of Responsibility Chain of Responsibility (aka CoR, Corrente de responsabilidade, Corrente de comando ou Chain of command) Criacionais Prototype Abstract Factory Builder Factory Method Singleton Command Comportamentais Chain of Responsibility Memento Observer Visitor Template Method Iterator State Strategy Mediator ✓ ✓ ✓ ✓ ✓ ✓ ✓ Estruturais Adapter Flyweight Ilustrações: SHVETS (2022) Bridge FacadeDecorator Composite Proxy ✓ ✓ ✓ ✓ ✓✓ ✓ ✓ ✓ ✓ ✓ ✓✓ ✓ ● É um padrão de projeto que tem por objetivo implementar uma corrente de handlers. Cada handler (ou elo) da corrente processa o pedido ou passa para o próximo handler (ou elo). Definição O caráter de árvore em uma arquitetura CoR Estrutura O Handler declara a interface, comum a todos os handlers concretos. Ele geralmente contém apenas um único método para lidar com pedidos, mas algumas vezes ele pode conter outro método para configurar o próximo handler da corrente. Fo n te : S H V E T S (2 0 2 2 ) Estrutura O Handler Base é uma classe opcional onde você pode colocar o código padrão que é comum a todas as classes handler. Geralmente, essa classe define um campo para armazenar uma referência para o próximo handler. Os clientes podem construir uma corrente passando um handler para o construtor ou setter do handler anterior. A classe pode também implementar o comportamento padrão do handler: pode passar a execução para o próximo handler após checar por sua existência. Fo n te : S H V E T S (2 0 2 2 ) Estrutura O Handler Concreto contém o código real para processar pedidos. Ao receber um pedido, cada handler deve decidir se processa ele e, adicionalmente, se passa ele adiante na corrente. Os handlers são geralmente auto contidos e imutáveis, aceitando todos os dados necessários apenas uma vez através do construtor. Fo n te : S H V E T S (2 0 2 2 ) Estrutura O Cliente pode compor correntes apenas uma vez ou compô-las dinamicamente, dependendo da lógica da aplicação. Note que um pedido pode ser enviado para qualquer handler na corrente—não precisa ser ao primeiro. Fo n te : S H V E T S (2 0 2 2 ) ✓ É possível controlar a ordem em que os tratamento é executado. ✓ Princípio da responsabilidade única. Quem chama a operação é uma entidade diferente de quem processa. ✓ Princípio do aberto/fechado. A introdução de novos handlers não modifica aqueles já existentes. Im ag em d e p ik is u p er st ar n o F re ep ik (Des) Vantagens de utilizar o padrão ✖ Dependendo de como se der a implementação, pode acontecer de uma requisição não ser processada por ninguém. D úv id as ? Referências SHVETS, Alexander. Mergulho nos Padrões de Projeto. Edição 2023-1.24. Kyiv: Refactoring.guru. 2022.
Compartilhar