Sobes.tech
Junior — Middle

Pode explicar o que é o padrão de projeto iterador e como ele é aplicado?

sobes.tech IA

Resposta da IA

O padrão de design Iterador destina-se a percorrer sequencialmente os elementos de uma coleção sem revelar a sua estrutura interna.

Ideia principal:

  • O iterador fornece uma interface para aceder aos elementos da coleção um de cada vez.
  • Permite ao código cliente percorrer os elementos sem saber como a coleção está organizada internamente.

Em C#, o iterador é implementado usando as interfaces IEnumerator e IEnumerable. Normalmente, usa-se a palavra-chave yield, que simplifica a criação de iteradores.

Exemplo de um iterador em C#:

using System;
using System.Collections;
using System.Collections.Generic;

class MyCollection : IEnumerable<int>
{
    private int[] data = {1, 2, 3, 4, 5};

    public IEnumerator<int> GetEnumerator()
    {
        foreach (var item in data)
        {
            yield return item; // devolve os elementos um de cada vez
        }
    }

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

class Program
{
    static void Main()
    {
        var collection = new MyCollection();
        foreach (var item in collection)
        {
            Console.WriteLine(item);
        }
    }
}

Aqui, MyCollection implementa IEnumerable<int>, permitindo usar foreach para percorrer os elementos. O iterador oculta os detalhes do armazenamento de dados e fornece uma forma simples de percorrê-los.