2
respostas

Não ficou claro na aula o ACOPLAMENTO

Novamente neste caso aqui você criou uma classe AcaoAposGerarNota da qual descendem EnviarEmail e NotaFiscalDAO. A questão que a única justificativa para criar tal hierarquia seria fazer algo:

foreach($this->acoesAposGerarNota as $acao){
  $acao->executar();
}

nas duas linhas onde você escreve:

$this->enviadorEmail->envia($nf);
$this->notaFiscalDAO->persiste($nf);

e ai você implementa executar() a seu gosto nas classes EnviarEmail e NotaFiscalDAO. Entende ? GeradorDeNotaFiscal se preocuparia então apenas em chamar um executar(), seja lá o que ele fizesse..

2 respostas

Desculpa os erros, editei o post, espero ter ajudado.

Acho que a gente deve entender que o objetivo principal da classe é gerar a nota fiscal. As classes EnviadorDeEmail e NotaFiscalDAO não devem ser depências ao se instanciar esse gerador.

Da forma como estava o código essas duas classes estavam "coladas" ou seja, acopladas à lógica da classe.

Duas situações eram prejudiciais:

  1. Classe obriga a enviar email e persistir, essa função não é dinâmica;
  2. Sempre que precisar de outra ação eu teria que mexer na minha classse, se eu precisasse, por exemplo, enviar um sms eu teria q modificar o código da minha classe ao invés de somente adicionar uma ação;

"Acho que a gente deve entender que o objetivo principal da classe é gerar a nota fiscal. Enviador de Email e NotaFiscalDAO não devem ser depências para instanciar o gerador de nota fiscal."

Isso eu sei e era o que eu estava falando.

De resto não entendi nada do que você escreveu e ainda precisaria melhorar a estruturação da resposta.... Há frases sem sentido.