Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Iterator

Поведенческие шаблоны

Применяются для передачи управления в системе. Существуют методы организации управления, применение которых позволяет добиться значительного повышения как эффективности системы, так и удобства её эксплуатации.

 

Мы рассмотрим следующие поведенческие шаблоны:

  • Iterator.
  • Command.
  • Observer.
  • Template Method.
  • Visitor.

 

Предоставляет единый метод последовательного доступа к элементам коллекции, не зависящий от самой коллекции и никак с ней не связанный.

 

В данном случае, обязанность за создание конкретного экземпляра итератора возлагается на саму коллекцию, таким образом, коллекция является ещё и Factory. Классы, использующие Iterator – пользуются только открытым интерфейсом, получаемым из коллекции. При этом, совершенно не имеет значения какой конкретно итератор в данный момент реализует интерфейс. Примером может служить ResultSet из JDBC API, который позволяет последовательно перебирать результат запроса. При этом, классу-пользователю нет необходимости заботиться о типе и механизмах организации итератора. Это может быть открытый курсор в БД, это может быть локально буферизированная структура, итератор может подгружать данные по мере выдачи их пользователю и т.п.

Каждый конкретный итератор, как правило, знает о внутреннем устройстве коллекции, для которой он создаётся, чтобы наиболее эффективно осуществлять навигацию по её элементам. Так, например, итератор для ArrayList знает, что данные в ArrayList хранятся в виде закрытого массива, что позволяет итератору осуществлять быстрый доступ к его элементам.

Важно понимать, что помимо итераторов только для чтения, существуют и те, которые предоставляют возможность модификации коллекции, например удаления текущего элемента. Более того, так как итератор представляет собой состояние чтения коллекции, при изменении её состава, это состояние может оказаться неправильным. Например, указатель на текущий элемент у некоего итератора может, в результате удаления из коллекции элемента, находиться за допустимой границей. Для этого, большинством итераторов поддерживается механизм генерации Exception, в случае если в процессе работы итератор замечает, что нижележащая коллекция была изменена из другого потока.

<== предыдущая лекция | следующая лекция ==>
Abstract Factory | Command
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 400; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.