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 ელემენტების გადასალახად. იტერატორი მალავს მონაცემების შენახვის დეტალებს და უზრუნველყოფს მათ გადალახვის მარტივ გზას.