Итеративный режим
Итеративный режим (Iterator Pattern) Java и .Net среда программирования является очень распространенным шаблон дизайна. Этот режим используется для последовательных элементов доступа коллекции объектов, коллекция объектов не должны знать, лежащего в основе представления.
Итератор картина принадлежит поведенческие модели.
введение
Цель: Обеспечить способ доступа к объекту в каждом элементе полимеризации, но нет необходимости подвергать внутреннюю часть объекта.
Главным образом , чтобы решить:другой способ обойти весь объект интеграции.
Когда использовать: обходе полимерный объект.
Как исправить: прогулка между элементами ответственности перед итераторы вместо совокупности объектов.
Код ключа: определить интерфейс: hasNext, рядом.
Примеры применения: JAVA в итераторе.
Преимущества: 1, который поддерживает различные способы обхода совокупного объекта.2, что упрощает класс итератора полимеризации. 3, в том же самом полимеризации может иметь несколько ВТП. 4, в итерационном режиме, добавить новый класс полимерного класса итератора и легко, без изменения исходного кода.
Недостатки: Из - за разделения обязанностей итератора хранения данных модели и маршрутных данных, добавлять новые агрегированные классы требуют соответствующего увеличения нового класса итератора, число класса пар увеличивается, что увеличивает сложность системы до некоторой степени.
Сценарии использования: 1, доступ к полимерному содержимого объекта без необходимости подвергать его внутреннее представление.2, необходимо обеспечить разнообразие агрегатного метода объекта обхода. 3 для перемещения различных агрегатных структуры обеспечивает единый интерфейс.
Примечания: итеративный режим отделенные поведение обхода коллекции объектов, абстрактный класс итератора быть ответственным, так что оба может быть сделано без контакта с внутренней структурой коллекции, но и пусть внешний код прозрачный доступ к внутренней сбора данных.
реализация
Мы создадим интерфейситератораописательная и способ навигации Возвращает итератор интерфейсаContainer.Класс EntityКонтейнерреализует интерфейс будет нести ответственность за реализацию интерфейсаIterator.
IteratorPatternDemo,наши демонстрационные классы используют класс сущностей для печатиNamesRepositoryNamesRepository хранится в виде коллекцииимен.
Шаг 1
Создайте интерфейс.
Iterator.java
открытый интерфейс Iterator { общественного логический hasNext (); общественного объекта в следующем (); }
Container.java
открытый интерфейс Контейнер { общественного Итератор getIterator (); }
Шаг 2
Создать класс сущностейКонтейнерреализует интерфейс. Этот класс реализован интерфейсNameIteratorитератора внутренний класс.
NameRepository.java
Открытый класс NameRepository реализует контейнер { Названия общественных String [] = { "Роберт", "Джон", "Джули", "Lora"}; @Override общественного Итератор getIterator () { вернуть новый NameIterator (); } частный класс NameIterator реализует Iterator { INT индекс; @Override общественного логический hasNext () { если (индекс <names.length) { возвращает истину; } возвращение ложным; } @Override общественный объект Следующий () { если (this.hasNext ()) { возвращать имена [индекс ++]; } возвращать нуль; } } }
Шаг 3
ИспользуйтеNameRepository, чтобы получить итераторы, и напечатать имена.
IteratorPatternDemo.java
Открытый класс IteratorPatternDemo { государственной статической силы основных (String []) {агдз NameRepository namesRepository = новый NameRepository (); для (Iterator ITER = namesRepository.getIterator (); iter.hasNext ();) { Имя String = (String) iter.next (); System.out.println ( "Имя:" + имя); } } }
Шаг 4
Проверьте выход.
Имя: Роберт Имя: John Имя: Джули Имя: Lora