Sobes.tech
Junior — Middle

İteratör tasarım deseninin ne olduğunu ve nasıl uygulandığını açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

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