Sobes.tech
Junior — Middle

Итератор дизайн үлгүсү эмне экенин жана ал кандай колдонулушу мүмкүн экенин түшүндүрө аласызбы?

sobes.tech AI

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 колдонуп, элементтерди өтүүгө мүмкүндүк берет. Итератор маалымат сактоо деталдарын жашырып, алардын өтүүсүнүн жөнөкөй жолун камсыздайт.