Sobes.tech
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 για την περιήγηση στα στοιχεία. Ο δείκτης κρύβει τις λεπτομέρειες αποθήκευσης δεδομένων και παρέχει έναν απλό τρόπο περιήγησης.