Предоставить способ последовательного доступа к элементам агрегированного объекта, не раскрывая его базовое представление.
- Итератор: определяет интерфейс для доступа и обхода элементов.
- ConcreteIterator: реализует интерфейс итератора. Отслеживает текущую позицию при обходе агрегата.
- Агрегат: определяет интерфейс для создания объекта итератора
- ConcreteAggregate: реализует интерфейс создания итератора для возврата экземпляра соответствующего ConcreteIterator
public class Main { public static void main(String[] args) { String items[] = { "Item A", "Item B", "Item C", "Item D" }; Aggregate aggregate = new ConcreteAggregate(items); for (Iterator iter = aggregate.getIterator(); iter.hasNext();) { String item = (String) iter.next(); System.out.println(item); } } } public interface Aggregate { Iterator getIterator(); } public class ConcreteAggregate implements Aggregate { private String items[]; public ConcreteAggregate(String[] items) { this.items = items; } @Override public Iterator getIterator() { return new ConcreteIterator(items); } } public interface Iterator { public boolean hasNext(); public Object next(); } public class ConcreteIterator implements Iterator { private String items[]; private int index; public ConcreteIterator(String[] items) { this.items = items; } @Override public boolean hasNext() { if (index < items.length) { return true; } return false; } @Override public Object next() { if (this.hasNext()) { return items[index++]; } return null; } }
Item A Item B Item C Item D
eidherjulian61/дизайн-шаблоны
Основные шаблоны Проектирования
ид ・ 27 сентября ・ 1 минута чтения
Оригинал: “https://dev.to/eidher/iterator-pattern-497a”