Junior — Middle
Можете ли објаснити у чему се састоји образац дизајна итератор и како се примењује?
sobes.tech АИ
Одговор од АИ
Шаблон за дизајн Итератор је намењен за последовно обилажење елемената колекције без откривања њене унутрашње структуре.
Главна идеја:
- Итератор пружа интерфејс за приступ елементима колекције један по један.
- Омогућава корисничком коду да пролази кроз елементе без знања како је колекција унутрашње организована.
У 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 за обилазак елемената. Итератор скрива детаље складиштења података и пружа једноставан начин за њихово обилажење.