Introdução à Cadeia de Responsabilidade

Cadeia de Responsabilidade do inglês (Chain of Responsibility)

Neste artigo, vou explicar e demonstrar o padrão da Cadeia de Responsabilidade de forma bem simples.

Definição:

A Cadeia de Responsabilidade é um padrão de design comportamental que processa uma solicitação através de uma série de objetos processador (manipuladores / receptores). A solicitação é enviada de um objeto manipulador para outro e processada por uma (implementação pura) ou todos os manipuladores. Todos os manipuladores fazem parte da cadeia.

Chain Of Responsibility

Participantes

O padrão na versão curta inclui:

  • O Handler: define uma interface para o tratamento de solicitações. Pode ser uma classe abstrata, que opcionalmente implementa métodos padrão ea maneira de definir um sucessor na cadeia.
  • Muitos objetos manipuladores de concreto: processar a solicitação e, opcionalmente, fornecer acesso a sucessores;

CoR também pode incluir:

  • um objeto Cliente para executar o pedido e configurar a cadeia;
  • um objeto Request;
  • um objeto de resposta;
  • outros padrões de design.

O padrão de design do CoR não é aquele que é usado com freqüência, mas sua lógica básica torna útil em vários casos.

O CR é útil quando:

  • O manipulador deve ser determinado automaticamente (por exemplo, um sistema de registro);
  • O manipulador não pode ser conhecido antecipadamente (por exemplo, manipulação de exceções);
  • A solicitação deve passar por uma prioridade de cadeia específica (por exemplo, propagação de eventos, propagação de comando) ou a ordem da cadeia deve ser dinâmica.

Uso básico

O CoR é frequentemente aplicado em conjunto com o padrão Composto, pelo que é fácil tratar todos os manipuladores da mesma forma e enviar o pedido aos sucessores da cadeia.

Abaixo está um exemplo básico de PHP:

Confira o resulta no site de teste: http://ideone.com/e.js/4LCeHz

Obrigado! E até o próximo artigo, gostou compartilhe com amigos que estão estudando o PHP.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.