Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, kas ir iteratora dizaina modelis un kā tas tiek piemērots?

sobes.tech AI

Atbilde no AI

Dizaina paraugs Iterators ir paredzēts secīgi pārlūkot kolekcijas elementus, neslēpjot tās iekšējo struktūru.

Galvenā ideja:

  • Iterators nodrošina saskarni, lai piekļūtu kolekcijas elementiem pa vienam.
  • Tas ļauj klienta kodam pārlūkot elementus, nezinot, kā kolekcija ir organizēta iekšpusē.

C# valodā iterators tiek īstenots ar IEnumerator un IEnumerable saskarnēm. Parasti tiek izmantots atslēgvārds yield, kas vienkāršo iterators.

C# piemērs:

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; // atgriež elementus pa vienam
        }
    }

    IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}

class Program
{
    static void Main()
    {
        var collection = new MyCollection();
        foreach (var item in collection)
        {
            Console.WriteLine(item);
        }
    }
}

Šeit MyCollection realizē IEnumerable<int>, ļaujot izmantot foreach elementu pārlūkošanai. Iterators slēpj datu glabāšanas detaļas un nodrošina vienkāršu veidu, kā tos pārlūkot.