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..