Sobes.tech
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.