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.