Coleções aparecem o tempo todo em software.
O problema começa quando o cliente precisa conhecer como cada coleção organiza seus dados para conseguir percorrê-la.
temProximo()
proximo()
interface IteradorDisciplina { boolean temProximo(); String proximo(); } class GradeCurricular { private final List<String> disciplinas = new ArrayList<>(); public IteradorDisciplina criarIterador() { return new GradeCurricularIterador(disciplinas); } }
class GradeCurricularIterador implements IteradorDisciplina { private final List<String> disciplinas; private int posicaoAtual = 0; public boolean temProximo() { return posicaoAtual < disciplinas.size(); } public String proximo() { return disciplinas.get(posicaoAtual++); } }
for