Referente a ideia de receber o próximo item pelo construtor eu pensei na seguinte abordagem:
//Código
public ItemAtual(){
this.proximo = new ItemProximo();
}
//Código
Desta forma estaria colocando a responsabilidade de saber quem é o próximo item para a própria classe e removendo essa responsabilidade do cliente, pois não vejo motivo para o mesmo saber quem seria o próximo de cada uma das infinitas possibilidades de classes.
Esta abordagem está incorreta ou fere alguma boa prática?