Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Padrão utilizado em Arquitetura de Middlewares MVC.

Boa noite !

Uma curiosidade: Esse padrão de projeto "Chain of Responsibility" é o mesmo aplicado nos frameworks MVC na parte de Middlewares?

No Laravel por exemplo, podemos "encadear interceptadores" e cada um ter sua regra de negócio definida. No final, quem chama o "próximo interceptador" (caso houver) ou o "controle" é a própria Closure $next

public function handle($request, Closure $next) {
    // implementação da regra de negócio

    return $next($request);
}

Pior que são muito parecidos nessa idéia de "chame o próximo" que foi utilizada nas regras dos descontos !

1 resposta
solução!

Oi Guilherme, tudo bom?

Muito bem observado! Os frameworks MVC muitas vezes implementam muitos dos patterns mais comuns mesmo =)

Porém, não acredito que podemos dizer com certeza que essa implementação das middlewares no laravel refletem exatamente esse pattern porque padrões de projeto dependem também da motivação e precisaríamos estudar a implementação como um todo, olhar apenas o método handle() não é suficiente pra dar uma posição acertiva.

Aparentemente, as middlewares do laravel trabalham só com uma closure (função anônimas que passamos por parâmetro) que é executada passando o request como parâmetro.

Aqui, não podemos deduzir se isso realmente é uma cadeia de responsabilidades. Ou seja, se a sequencia em que as coisas são executadas tem alguma importância nesse processo e se é recursivo mesmo.

Acho que uma boa abordagem é ir mais a fundo na implementação do fluxo de vida da requisição, assim a gente conseguiria entender realmente em que momento da aplicação esse Handle está sendo executado e se ele realmente faz parte de alguma cadeia de responsabilidades =)

Se o pattern implementado não for o Chain, com certeza será algum outro ;)

Abraço!