Илия Попов ИСТ-2 ФК 20251421006
Шаблонът „Итератор“(Iterator)
Предназначение:
Предоставя достъп до всички елементи на един съставен обект, без да разкрива неговото вътрешно
представяне.
Мотивация
Практически всяко приложение в една или друга степен използва колекции от данни. Когато
програмираме по някога ни се налага да използваме вектори, списъци, дървета или хеш таблици. В някои
случаи за обработката на данни на колекция се използва специфичен интерфейс на конкретни колекции,
но в определени случаи вътрешният достъп се осъществява, чрез специалния абстрактен слой
итераторът. Итераторите предоставят абстрактен интерфейс за достъп до съдържанието на съставни
обекти, без да разкриват на клиента тяхната вътрешна структура. В резултат се получава ясно разделение
на отговорностите:
Клиентите получават възможност да работят с различни колекции по унифициран начин, а
класовете на колекциите стават по прости, благодарение на това, че отговорността за
обхождането на елементите им се възлага на отделна същност.
Итераторите са до такава степен вкоренени в повечето езици и платформи, че тяхната поддръжка
се появява дори на ниво езици за програмиране като цикъла foreach в C#, range-for в C++ 11, for в
Java 5+ . Дори в консервативния Eiffel е реализирана аналогична конструкция across. Нещо
повече, много езици поддържат не само използване на итератори с помощта на циклите foreach и
разновидностите му, но и тяхното създаване, благодарение итератор блокове(Iterator Block в C#
и VB) или така наречените конструктори на последователности „SEQUENCE
COMPREHENSION “ достъпни в F#, Scala, Python и много други.
Итераторите са изключително подходящи за достъпване на данни от някакъв източник. Така например,
вместо класа LogFileReader бихме могли да използваме класа LogFileSource, който да имплементира
интерфейса IEnumerable<LogEntry> показан на листинг 1.
Учебни материали
Споделени от колеги - с преглед преди изтегляне.
Информатика и компютърни науки
Разработване на ООП със софтуерни шаблони
Поведенчески шаблони
Преглед на първите от 7 страници.
Описание
Поведенчески шаблон Итератор(Iterator) реализиран за .NET Framework чрез езика C#. UML Диаграмите са реализирани чрез Umbrelo версия 2.32.
0 коментара
За да коментирате, трябва да сте влезли в профила си.
Влезте