iterator-pattern
🧠 Concept
🧱 Key Roles
Role
Description
💻 Java Example – Report Iterator
// Iterator interface
interface Iterator<T> {
boolean hasNext();
T next();
}
// Aggregate interface
interface ReportCollection {
Iterator<String> createIterator();
}
// Concrete collection
class ReportList implements ReportCollection {
private List<String> reports = new ArrayList<>();
void addReport(String report) {
reports.add(report);
}
public Iterator<String> createIterator() {
return new ReportIterator(reports);
}
}
// Concrete iterator
class ReportIterator implements Iterator<String> {
private List<String> reports;
private int index = 0;
ReportIterator(List<String> reports) {
this.reports = reports;
}
public boolean hasNext() {
return index < reports.size();
}
public String next() {
return hasNext() ? reports.get(index++) : null;
}
}🧠 Flow Summary (Step-by-Step)
Step
Action
Iterator State
Output
🪜 Summary
📊 Real-world Analogy
Last updated