Junior — Middle
Meg tudná magyarázni, hogy mi az az iterátor tervezési minta, és hogyan alkalmazzák?
sobes.tech MI
Válasz az MI-től
A Követő (Iterator) tervezési minta arra szolgál, hogy egy kollekció elemein keresztül haladjunk sorban anélkül, hogy feltárnánk annak belső szerkezetét.
Fő ötlet:
- A követő egy interfészt biztosít az elemek eléréséhez egyenként.
- Lehetővé teszi a klienskód számára, hogy végigmenjen az elemeken anélkül, hogy tudná, hogyan van szervezve a kollekció belül.
C#-ban a követőt az IEnumerator és IEnumerable interfészek segítségével valósítják meg. Általában a yield kulcsszót használják, ami megkönnyíti a követők létrehozását.
Példa egy C#-ban írt követőre:
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; // elemeket egyenként ad vissza
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
class Program
{
static void Main()
{
var collection = new MyCollection();
foreach (var item in collection)
{
Console.WriteLine(item);
}
}
}
Itt a MyCollection megvalósítja az IEnumerable<int>-t, lehetővé téve a foreach használatát az elemek bejárására. A követő elrejti az adatok tárolásának részleteit, és egyszerű módot kínál azok bejárására.