Sobes.tech
Back to questions
Junior — Middle
72

Можете объяснить, что представляет собой паттерн проектирования итератор и как он применяется?

Companies where asked
Sector Tree

Answer from AI

sobes.tech AI

Паттерн проектирования Итератор (Iterator) предназначен для последовательного обхода элементов коллекции без раскрытия её внутренней структуры.

Основная идея:

  • Итератор предоставляет интерфейс для доступа к элементам коллекции по одному.
  • Позволяет клиентскому коду перебирать элементы, не зная, как именно коллекция устроена внутри.

В 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 для перебора элементов. Итератор скрывает детали хранения данных и предоставляет простой способ обхода.