top of page

C# Design Pattern: Iterator

O padrão Iterator é usado para fornecer uma maneira de acessar sequencialmente os elementos de uma coleção, sem expor sua representação interna. Ele permite percorrer listas, coleções ou arrays de forma simplificada. Um exemplo seria iterar sobre uma lista de itens em um carrinho de compras, sem precisar conhecer os detalhes de como a lista foi implementada.


Exemplo de Código em C#:


// Interface do Iterador
public interface IIterador<T>
{
    bool HasNext();
    T Next();
}

// Interface da Coleção
public interface IColecao<T>
{
    IIterador<T> CriarIterador();
}

// Implementação da Coleção de Itens
public class ColecaoDeItens : IColecao<string>
{
    private List<string> _itens = new List<string>();

    public void AdicionarItem(string item)
    {
        _itens.Add(item);
    }

    public IIterador<string> CriarIterador()
    {
        return new IteradorDeItens(this);
    }

    public List<string> GetItens()
    {
        return _itens;
    }
}

// Implementação do Iterador para a Coleção de Itens
public class IteradorDeItens : IIterador<string>
{
    private ColecaoDeItens _colecao;
    private int _posicao = 0;

    public IteradorDeItens(ColecaoDeItens colecao)
    {
        _colecao = colecao;
    }

    public bool HasNext()
    {
        return _posicao < _colecao.GetItens().Count;
    }

    public string Next()
    {
        if (HasNext())
        {
            return _colecao.GetItens()[_posicao++];
        }
        return null;
    }
}

class Program
{
    static void Main(string[] args)
    {
        // Criar uma coleção de itens
        ColecaoDeItens colecao = new ColecaoDeItens();
        colecao.AdicionarItem("Item 1");
        colecao.AdicionarItem("Item 2");
        colecao.AdicionarItem("Item 3");

        // Criar o iterador
        IIterador<string> iterador = colecao.CriarIterador();

        // Percorrer a coleção usando o iterador
        while (iterador.HasNext())
        {
            Console.WriteLine(iterador.Next());
        }
    }
}

Explicação do Código:


Neste exemplo, a classe ColecaoDeItens implementa uma coleção de strings e fornece um iterador através do método CriarIterador. O IteradorDeItens implementa a interface IIterador, permitindo percorrer os itens da coleção. No programa principal, o iterador é usado para acessar cada item da coleção de forma sequencial.


Conclusão:


O padrão Iterator permite percorrer coleções de maneira consistente, sem expor a estrutura interna da coleção. Ele é útil quando você quer fornecer um meio simples de iterar sobre os elementos de uma lista, conjunto ou array.


0 visualização

Posts recentes

Ver tudo

Dica C#: Default Interface Methods

Vamos falar sobre uma novidade do C# 12: Default Interface Methods. Esse recurso permite que interfaces contenham implementações de...

Dica C#: Global Using Directives

Vamos para uma dica do C# 10: Global Using Directives. Com essa funcionalidade, você pode definir diretivas using globais que se aplicam...

bottom of page