Интернет магазин китайских планшетных компьютеров



Компьютеры - Итератор (шаблон проектирования)

30 марта 2011


Оглавление:
1. Итератор (шаблон проектирования)
2. Использование



Шаблон проектирования, относится к паттернам поведения. Представляет собой объект, позволяющий получить последовательный доступ к элементам объекта-агрегата без использования описаний каждого из объектов, входящий в состав агрегации.

Например, такие элементы как дерево, связанный список, хэш-таблица и массив могут быть пролистаны с помощью паттерна Итератор.

Особенностью полноценно реализованного итератора является то, что код, использующий итератор, может ничего не знать о типе итерируемого агрегата.

Конечно же, почти любой агрегат можно итерировать указателем void*, но при этом:

  • не ясно, что является значением "конец агрегата", для двусвязного списка это &ListHead, для массива это &array, для односвязного списка это NULL
  • операция Next сильно зависит от типа агрегата.

Итераторы абстрагируют именно эти 2 проблемы, используя полиморфный Next и полиморфный aggregate.end, возвращающий значение "конец агрегата".

Таким образом, появляется возможность работы с диапазонами итераторов, при отсутствии знания о типе итерируемого агрегата. Например:

Iterator itBegin = aggregate.begin;
Iterator itEnd = aggregate.end;
func;

И далее:

void func
{
 for
 {
 }
}


Просмотров: 912


<<< Интерфейс (шаблон проектирования)
Команда (шаблон проектирования) >>>