Também não consegui identificar o padrão observer aqui e acho que manter a aula como está é uma má prática. O desacoplamento em si, foi resolvido mas do meu ponto de vista essa é a implementação do padrão Command. Você tem uma interface simples com um único método de execução onde você tem varias classes que a implementam e podem ser injetado em um mesmo ponto de execução de um algoritmo. O ponto do algoritmo onde a execução tá sendo injetada é após a geração de nota fiscal. Me parece que o uso do termo observer nessa aula errado.