Sobes.tech
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.