PSS – Design Pattern Chain of Responsibility 1 Chain of Responsibility Propósito do Padrão • Evitar acoplamento do emissor de uma requisição com seu receptor; • Cadeia de objetos atende solicitação 2 Chain of Responsibility Motivação • Desacoplar emissores e receptores dando a chance de vários objetos manipularem a requisição; 3 Chain of Responsibility Aplicação • Mais de um objeto (desconhecido pelo emissor) pode tratar uma solicitação; • Alguém que fazer um pedido para dentre vários objetos sem especificá-lo. • Os objetos que podem manipular uma solicitação seriam especificados manualmente. 4 Chain of Responsibility Estrutura 5 Chain of Responsibility Participantes • Handler – Define a interface para receber as solicitações; – Implementa o link para o sucessor (opcional) • ConcreteHandler – Recebe as solicitações pelas quais é responsável; – Tem acesso ao sucessor para quem envias as solicitações que não são de sua responsabilidade • Client – Inicia a solicitação para um objeto na cadeia 6 Chain of Responsibility Colaborações • Quando um cliente faz uma solicitação, o pedido se propaga pela cadeia até que algum objeto assuma a responsabilidade de atender 7 Chain of Responsibility Conseqüências • Reduz o acoplamento; • Atribuindo responsabilidade aos objetos, adiciona-se flexibilidade; • A recepção da solicitação não é garantida 8 Chain of Responsibility Exemplos de Código • Implementação do FilterCriteria 9 Chain of Responsibility Exemplos de Código • Adicionando o FilterCriteria no CollectionFilter • Filtrando 10 Fim • Daniel Salles Chevitarese • [email protected]