Junior — Middle
Puteți explica în ce constă pattern-ul de proiectare iterator și cum se aplică?
sobes.tech AI
Răspuns de la AI
Modelul de proiectare Iterator este destinat pentru parcurgerea secvențială a elementelor unei colecții fără a dezvălui structura internă a acesteia.
Ideea principală:
- Iteratorul oferă o interfață pentru accesul la elementele colecției unul câte unul.
- Permite codului client să parcurgă elementele fără a ști cum este organizată colecția în interior.
În C#, iteratorul este implementat folosind interfețele IEnumerator și IEnumerable. De obicei, se folosește cuvântul cheie yield, care simplifică crearea iteratorilor.
Exemplu de iterator în 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; // returnează elementele unul câte unul
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
class Program
{
static void Main()
{
var collection = new MyCollection();
foreach (var item in collection)
{
Console.WriteLine(item);
}
}
}
Aici, MyCollection implementează IEnumerable<int>, permițând utilizarea foreach pentru parcurgerea elementelor. Iteratorul ascunde detaliile de stocare a datelor și oferă o modalitate simplă de a le parcurge.