Sobes.tech
Junior — Middle

Můžete vysvětlit, o co jde v návrhovém vzoru iterátor a jak se používá?

sobes.tech AI

Odpověď od AI

Vzor návrhu Iterátor je určený na sekvenčné prechádzanie prvkov kolekcie bez odhalenia jej vnútorné štruktúry.

Hlavná myšlienka:

  • Iterátor poskytuje rozhranie na prístup k prvkom kolekcie po jednom.
  • Umožňuje klientskému kódu prechádzať prvky, nevediac, ako je kolekcia usporiadaná vo vnútri.

V jazyku C# je iterátor implementovaný pomocou rozhraní IEnumerator a IEnumerable. Zvyčajne sa používa kľúčové slovo yield, ktoré zjednodušuje tvorbu iterátorov.

Príklad iterátora v 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; // vracia prvky po jednom
        }
    }

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

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

Tu MyCollection implementuje IEnumerable<int>, čo umožňuje použiť foreach na prechádzanie prvkov. Iterátor zakrýva detaily ukladania dát a poskytuje jednoduchý spôsob ich prechádzania.