定义:提供一种方法,顺序访问聚合对象中的各个元素,而又不暴露其内部的表示。
类图

示例
public class Book {
private String name;
private String author;
public Book(String name, String author) {
this.name = name;
this.author = name;
}
@Override
public String toString() {
return "[name:"+name+"\t author:"+author+"]";
}
}
//iterator
public interface Iterator {
boolean hasNext();
Object next();
}
//ConcreteIterator
public class BookArrayIterator implements Iterator {
Book[] books;
int position = 0;
public BookArrayIterator(Book[] books){
this.books = books;
}
@Override
public boolean hasNext() {
if(position>=books.length){
return false;
}
return true;
}
@Override
public Object next() {
return books[position++];
}
}
//aggregate
public interface Items {
Iterator createIterator();
}
//ConcreteAggregate
public class BookItems implements Items {
Book[] books;
public BookItems(Book[] books){
this.books = books;
}
@Override
public Iterator createIterator() {
return new BookArrayIterator(books);
}
}
public class Client {
public static void main(String[] args) {
//初始化书单
Book book1 = new Book("book1", "author1");
Book book2 = new Book("book2", "author2");
Book book3 = new Book("book3", "author3");
Book[] books = {book1, book2, book3};
BookItems bookItems = new BookItems(books);
//客户调用迭代器
Iterator bookIterator = bookItems.createIterator();
while (bookIterator.hasNext()) {
System.out.println(bookIterator.next());
}
}
}
运行结果

来源:https://www.cnblogs.com/camcay/p/12365342.html