Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não seria mais prático fazer uma sobrecarga do construtor de Leilão?

Leilão teriam dois construtores, uma sobrecarga recebendo a modalidade e uma sem receber, definindo MaiorValor como avaliador nesse caso. Desse jeito evita precisar refatorar testes anteriores que não previam a existência de modalidade (que não muda a execução de teste).

public Leilao(string peca, IModalidadeAvaliacao avaliador)
{
    Peca = peca;
    _lances = new List<Lance>();
    Estado = EstadoLeilao.LeilaoAntesDoPregao;
    _avaliador = avaliador;
}

public Leilao(string peca)
{
    Peca = peca;
    _lances = new List<Lance>();
    Estado = EstadoLeilao.LeilaoAntesDoPregao;
    _avaliador = new MaiorValor();
}
1 resposta
solução!

Olá Enzo, tudo bem?

Essa refatoração foi feita para aumentar a coesão da classe. Realmente é mais fácil apenas criar um outro construtor, mas foi como o Daniel falou, que faz sentido o Leilao receber o avaliador, porque pode ser que o avaliador de algum outro tipo, que não seja MaiorValor. Com isso, o Leilao recebe qualquer tipo que implemente a interface IModalidadeAvaliacao.

Um exemplo seria no caso de um leilão de menor lance único. Teria que fazer outras refatorações para aplicar a nova modalidade, sendo que receber um tipo que implementa a interface IModalidadeAvaliacao abrange qualquer tipo de modalidade de leilão, desde que não seja o MaiorValor.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software