design patterns elizabeth suescún monsalve. padrão chain of responsibility (cadeia de...
TRANSCRIPT
![Page 1: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/1.jpg)
Design Patterns
Elizabeth Suescún Monsalve
![Page 2: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/2.jpg)
Padrão Chain of Responsibility (cadeia de responsabilidades)
![Page 3: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/3.jpg)
© LES/PUC-Rio
Propósito do Padrão
• O padrão “Chain of Responsability” evita acoplar o emissor de uma petição com seu receptor, dando para mais de um objeto a possibilidade de responder à petição. Encadeia os objetos receptores e passa a petição a traves da cadeia hasta que é processada por algum objeto.
Padrão Chain of Responsibility
![Page 4: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/4.jpg)
© LES/PUC-Rio
Motivação
• Exemplo
O caso que temos é um gerador de logs. O sistema detecta um evento do qual deve informar, mais o sistema não precisa de se preocupar da classificação da mensagem e sua impressão, então, somente vai limitar-se a informar. Alem disso, necessita-se de uma forma de desacoplar o emissor e o sistema dos possíveis receptores, ou seja, os geradores de logs.
Padrão Chain of Responsibility
![Page 5: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/5.jpg)
© LES/PUC-Rio
Motivação
• Contexto do exemplo
– O primeiro objeto da cadeia recebe a petição, o qual pode processar ou enviá-la ao seguinte objeto da cadeia que vai fazer exatamente o mesmo.
– O objeto que fez a petição não conhece qual dos objetos da cadeia vai responder a sua petição.
– Se diz então que a petição tem receptor implícito.
Padrão Chain of Responsibility
![Page 6: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/6.jpg)
© LES/PUC-Rio
Motivação
• Suponha que o sistema há enviado um e-mail, o gerador de logs do e-mail se encontra em uma instancia do EmailLogger. O diagrama ilustra como a petição de imprimir a entrada de log passa a traves da cadeia
Padrão Chain of Responsibility
![Page 7: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/7.jpg)
© LES/PUC-Rio
Motivação
• Neste caso a petição não é processada pelo DebuggerLogger, e é detida no EmailLogger, o qual pode processá-la ou obviá-la. O cliente que deu origem à petição não fica sabendo qual é o objeto que finalmente trata a petição.
• Para garantir a petição ao longo da cadeia e para garantir que os receptores permaneçam implícitos, cada objeto da cadeia compartilha uma interface comum para processar as petições e para acessar ao seu sucessor na cadeia. Em nosso caso o método mensagem controla as petições.
Padrão Chain of Responsibility
![Page 8: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/8.jpg)
© LES/PUC-Rio
Aplicabilidade
• Este padrão deve ser usado quando:
– Quando tem-se mais de um objeto que pode controlar uma petição e essa petição não se conhece a - priori, deve-se determinar automaticamente.
– Se deseja enviar uma petição para um objeto entre vários sem especificar explicitamente o receptor.
– O conjunto de objetos que podem tratar uma petição deve ser especificado dinamicamente.
Padrão Chain of Responsibility
![Page 9: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/9.jpg)
© LES/PUC-Rio
Estrutura
Padrão Chain of Responsibility
![Page 10: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/10.jpg)
© LES/PUC-Rio
Participantes
• Handler (Comunicador):
– Define uma interface para tratar as petições.
– Implementa o enlace ao sucessor.
• ConcreteHandler (DebugLogger, EmailLogger)
– Trata as petições das quais é responsável.
– Pode aceder ao seu sucessor.
– Se o ConcreteHandler pode manejar a petição ele faz, senão o reenvia ao seu sucessor.
• Client:
– Inicializa a petição para um objeto ConcreteHandler da cadeia.
Padrão Chain of Responsibility
![Page 11: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/11.jpg)
© LES/PUC-Rio
Colaborações
• Quando um Client envia uma petição, esta se propaga a traves da cadeia hasta que um objeto ConcreteHandler se faz responsável de processá-la.
Padrão Chain of Responsibility
![Page 12: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/12.jpg)
© LES/PUC-Rio
Conseqüências
• Vantagens e inconvenientes do padrão:
– Reduz o acoplamento.
– Adiciona flexibilidade para designar responsabilidades aos objetos.
– Não é garantida a recepção.
Padrão Chain of Responsibility
![Page 13: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/13.jpg)
© LES/PUC-Rio
Padrão Chain of Responsibility
![Page 14: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/14.jpg)
Padrão Chain of Responsibility
© LES/PUC-Rio
![Page 15: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/15.jpg)
Padrão Chain of Responsibility
© LES/PUC-Rio
![Page 16: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/16.jpg)
Padrão Chain of Responsibility
© LES/PUC-Rio
![Page 17: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/17.jpg)
Padrão Chain of Responsibility
© LES/PUC-Rio
![Page 18: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/18.jpg)
Padrão Chain of Responsibility
© LES/PUC-Rio
![Page 19: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/19.jpg)
Padrão Chain of Responsibility
© LES/PUC-Rio
![Page 20: Design Patterns Elizabeth Suescún Monsalve. Padrão Chain of Responsibility (cadeia de responsabilidades)](https://reader035.vdocuments.site/reader035/viewer/2022062404/552fc105497959413d8c0105/html5/thumbnails/20.jpg)
Fim!!