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՝ տարրերի անցման համար: Իտերատորը թաքցնում է տվյալների պահպանումը և տրամադրում պարզ միջոց՝ դրանց անցնելու համար։