#MOC #Iteratorパターン [[🗃️デザインパターン]]の1つ。 要素の集まりを保有するオブジェクトで、各要素に順番でアクセスする方法を提供するためのパターン。 ```mermaid classDiagram Aggregate <|.. BookShelf Iterator <|.. BookShelfIterator BookShelf o-- BookShelfIterator : contains BookShelf o-- Book : contains class Aggregate{ +Iterator getIterator() } class Iterator{ +boolean hasNext() +Object next() } class BookShelf{ +void addBook(Book) +Iterator getIterator() } class BookShelfIterator{ +boolean hasNext() +Object next() } class Book{ -String name +String getName() } ``` ```java interface Iterator { boolean hasNext(); Object next(); } interface Aggregate { Iterator getIterator(); } class Book { private String name; public Book(String name) { this.name = name; } public String getName() { return name; } } class BookShelf implements Aggregate { private List<Book> books; public BookShelf() { this.books = new ArrayList<>(); } public void addBook(Book book) { books.add(book); } public Iterator getIterator() { return new BookShelfIterator(); } private class BookShelfIterator implements Iterator { private int index; public boolean hasNext() { return index < books.size(); } public Object next() { return hasNext() ? books.get(index++) : null; } } } ``` ## 📚ドキュメント - [Iterator パターン - Wikipedia](https://ja.wikipedia.org/wiki/Iterator_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3) - [1. Iteratorパターン 1 | TECHSCORE(テックスコア)](https://www.techscore.com/tech/DesignPattern/Iterator/) ## 📖ノウハウ ## 💁トラブルシューティング