Você está na página 1de 2

Chain of Responsibility

A intenção deste padrão é evitar o acoplamento do remetente de uma solicitação ao seu


receptor, ao dar a mais de um objeto a oportunidade de tratar essa solicitação. Encadear
os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a
trate.

Nesse padrão cada objeto receptor possui uma lógica descrevendo os tipos de
solicitação que é capaz de processar e como passar adiante aquelas que requeiram
processamento por outros receptores. A delegação das solicitações pode formar uma
árvore de recursão, com um mecanismo especial para inserção de novos receptores no
final da cadeia existente.

Dessa forma, fornece um acoplamento mais fraco por evitar a associação explícita do
remetente de uma solicitação ao seu receptor e dar a mais de um objeto a oportunidade
de tratar a solicitação.

Um exemplo da aplicação desse padrão é o mecanismo de herança nas linguagens


orientadas a objeto: um método chamado em um objeto é buscado na classe que
implementa o objeto e, se não encontrado, na superclasse dessa classe, de maneira
recursiva. Como benefício do uso do padrão, ele permite determinar quem será o objeto
que irá tratar a requisição durante a execução. Cada objeto pode tratar ou passar a
mensagem para o próximo na cadeia. Dessa forma, o acoplamento é reduzido, dando
ainda flexibilidade adicional na atribuição de responsabilidades a objetos.

Iterator: fornece uma maneira de acessar seqüencialmente uma coleção de


objetos sem expor a sua implementação;

• Command: encapsula uma solicitação como um objeto;


• Strategy: encapsula comportamentos intercambiáveis e usa a delegação para
decidir qual deles será usado
• Observer: permite notificar outros objetos quando ocorre uma mudança de
estado.
• Interpreter: permite construir um intérprete para uma linguagem;

Você também pode gostar