Command | Design Pattern
Muito usado em interfaces visuais para desacoplar a UI da lógica de negócios
Artigos e vídeos
Padrão de projetos - Command com C#
Dealing with Duplication in MediatR Handlers · Los Techies
Visão geral
O padrão de design de comando é um padrão de design comportamental (padrão de comunicação entre objetos) que converte uma solicitação ou operação em um objeto com todas as informações necessárias, como qual método chamar, argumentos, etc.
Desacoplar a execução de um comportamento da implementação concreta.
-
CQS- Se for
commando retorno precisa servoid-
Commandaltera o estado -
Commandcom retorno gera acoplamento de execução porque você espera um retorno -
Se torna sequencial o comando
public void Save(){}
// Se não der certo, estoura uma exception
-
- Se for
queryprecisa ter retorno- Não altera o estado, retorna valor
- Se for
-
O Elemar faz referência a nova forma do command demonstrada no livro
Enterprise Integration Pattern, onde o command não executa mais a ação e carrega apenas as propriedades para o handle executar- Na arquitetura moderna o comando é no estilo de mensagem
-
A consequência da execução de um comando é um evento
- Nessa fala ele complementa que se um
commandtem um retorno, gera acoplamento de execução(dificuldade de escalar a aplicação) e por isso que o a consequência é um evento. Nisso ele complementa que o uso deWebSocketpara dar o retorno seria algo interessante, pois não irá haver o acoplamento - Colocando retorno no
commandvocê aumenta o seu tempo de requisição porque você precisa esperar ocommandNormalAcepcional→ Impossibilidade de executar o comando
- Nessa fala ele complementa que se um
-
Commandé ação que você quer expressar do usuário no código. -
O comando é o comportamento enviado por mensagem
-
Command as Data(ou command as parameter usado nas API’s) é diferente do CQRS- Essa classe Command as Data é anêmica, deve ser imutável.
- A proposta dela é uma fonte de parâmetro.
- Esse é outro command , diferente do que é usado no CQRS onde executamos a função dentro do command
Sequência dos padrões
CQS → GOF Command → CQRS
Command é um DTO pois não traz lógica dentro dele