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