Olá, Carlos
Sua dúvida é bastante relevante e comum quando estamos projetando a arquitetura de uma aplicação. Vamos tentar esclarecer um pouco.
Ambas as abordagens que você mencionou têm seus méritos e podem ser aplicadas ao seu cenário. No entanto, a escolha entre elas pode depender de alguns fatores, como a complexidade da sua aplicação e suas preferências pessoais.
No caso do padrão MVC com Middlewares, você teria uma separação clara de responsabilidades, onde cada Middleware é responsável por uma tarefa específica (validação, autenticação, autorização) e os Controllers são responsáveis pela lógica de negócios (realizar a operação financeira). Isso pode tornar o seu código mais organizado e mais fácil de manter.
Por exemplo, você poderia ter um Middleware para validar a requisição, outro para autenticar o usuário e um terceiro para verificar se o usuário tem permissão para realizar a operação solicitada. Em seguida, o Controller receberia a requisição e realizaria a operação financeira.
Por outro lado, a abordagem de tratar todos os processos como Handlers e passá-los um a um até concluir a operação (Chain of Responsibility) pode ser mais flexível e permitir um controle mais granular sobre o fluxo de execução. No entanto, essa abordagem pode ser um pouco mais complexa de implementar e pode tornar o código mais difícil de seguir se a cadeia de Handlers for muito longa.
Por exemplo, você poderia ter um Handler para validar a requisição, que passa a requisição para o próximo Handler se a validação for bem-sucedida. O próximo Handler poderia ser responsável pela autenticação, e assim por diante, até que a operação financeira seja realizada.
Em resumo, ambas as abordagens são válidas e a escolha entre elas pode depender de fatores como a complexidade da sua aplicação e suas preferências pessoais. Você pode até mesmo combinar ambas as abordagens, se isso fizer sentido para o seu projeto.
Espero ter ajudado e bons estudos!