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