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