Паттерны

Расскажите про паттерн «Итератор» (Iterator)


Паттерн «Итератор» (Iterator) относится к поведенческим паттернам проектирования и используется для последовательного доступа и обхода элементов коллекции без раскрытия деталей ее внутренней структуры. Итератор предоставляет единый интерфейс для перебора элементов различных коллекций. Основная идея паттерна «Итератор» заключается в создании объекта-итератора, который инкапсулирует доступ и обход элементов коллекции. Итератор предоставляет методы для получения следующего элемента, проверки наличия следующего элемента и перехода к следующему элементу. Пример реализации паттерна «Итератор» на языке Java: // Интерфейс итератора public interface Iterator { boolean hasNext(); Object next(); } // Интерфейс коллекции public interface Collection { Iterator createIterator(); } // Конкретный итератор public class ConcreteIterator implements Iterator { private Object[] elements; private int position = 0; public ConcreteIterator(Object[] elements) { this.elements = elements; } public boolean hasNext() { return position < elements.length; } public Object next() { Object element = elements[position]; position++; return element; } } // Конкретная коллекция public class ConcreteCollection implements Collection { private Object[] elements; public ConcreteCollection(Object[] elements) { this.elements = elements; } public Iterator createIterator() { return new ConcreteIterator(elements); } } В данном примере у нас есть интерфейс Iterator, который определяет методы hasNext() и next() для обхода элементов коллекции. Интерфейс Collection определяет метод createIterator() для создания итератора. Класс ConcreteIterator реализует интерфейс Iterator и обходит элементы массива elements. Класс ConcreteCollection реализует интерфейс Collection и создает итератор ConcreteIterator для обхода элементов массива. Теперь мы можем использовать итератор для обхода элементов коллекции. Например: Object[] elements = { "Элемент 1", "Элемент 2", "Элемент 3" }; Collection collection = new ConcreteCollection(elements); Iterator iterator = collection.createIterator(); while (iterator.hasNext()) { Object element = iterator.next(); System.out.println(element); } Паттерн «Итератор» позволяет обходить элементы коллекции без раскрытия ее внутренней структуры. Это упрощает обход и перебор элементов различных коллекций и обеспечивает единый интерфейс для работы с ними.


Копировать ссылку