Latest web development tutorials

Итеративный режим

Итеративный режим (Iterator Pattern) Java и .Net среда программирования является очень распространенным шаблон дизайна. Этот режим используется для последовательных элементов доступа коллекции объектов, коллекция объектов не должны знать, лежащего в основе представления.

Итератор картина принадлежит поведенческие модели.

введение

Цель: Обеспечить способ доступа к объекту в каждом элементе полимеризации, но нет необходимости подвергать внутреннюю часть объекта.

Главным образом , чтобы решить:другой способ обойти весь объект интеграции.

Когда использовать: обходе полимерный объект.

Как исправить: прогулка между элементами ответственности перед итераторы вместо совокупности объектов.

Код ключа: определить интерфейс: hasNext, рядом.

Примеры применения: JAVA в итераторе.

Преимущества: 1, который поддерживает различные способы обхода совокупного объекта.2, что упрощает класс итератора полимеризации. 3, в том же самом полимеризации может иметь несколько ВТП. 4, в итерационном режиме, добавить новый класс полимерного класса итератора и легко, без изменения исходного кода.

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

Сценарии использования: 1, доступ к полимерному содержимого объекта без необходимости подвергать его внутреннее представление.2, необходимо обеспечить разнообразие агрегатного метода объекта обхода. 3 для перемещения различных агрегатных структуры обеспечивает единый интерфейс.

Примечания: итеративный режим отделенные поведение обхода коллекции объектов, абстрактный класс итератора быть ответственным, так что оба может быть сделано без контакта с внутренней структурой коллекции, но и пусть внешний код прозрачный доступ к внутренней сбора данных.

реализация

Мы создадим интерфейситератораописательная и способ навигации Возвращает итератор интерфейсаContainer.Класс EntityКонтейнерреализует интерфейс будет нести ответственность за реализацию интерфейсаIterator.

IteratorPatternDemo,наши демонстрационные классы используют класс сущностей для печатиNamesRepositoryNamesRepository хранится в виде коллекцииимен.

Итератор модели UML диаграмма

Шаг 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