Sobes.tech
Junior — Middle

Можете ли објаснити у чему се састоји образац дизајна итератор и како се примењује?

sobes.tech АИ

Одговор од АИ

Шаблон за дизајн Итератор је намењен за последовно обилажење елемената колекције без откривања њене унутрашње структуре.

Главна идеја:

  • Итератор пружа интерфејс за приступ елементима колекције један по један.
  • Омогућава корисничком коду да пролази кроз елементе без знања како је колекција унутрашње организована.

У C#-у, итератор се реализује помоћу интерфејса IEnumerator и IEnumerable. Обично се користи кључна реч yield, која поједностављује креирање итератора.

Пример итератора у 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; // враћа елементе један по један
        }
    }

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

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

Овде, MyCollection имплементира IEnumerable<int>, што омогућава коришћење foreach за обилазак елемената. Итератор скрива детаље складиштења података и пружа једноставан начин за њихово обилажење.