迭代器模式
场景来源于:《图解设计模式》
类图
代码实现样例
实体类
package org.goahead.Iterator.Sample;
import lombok.Data;
@Data
public class Book {
private String name;
public Book(String name) {
this.name = name;
}
}
接口
package org.goahead.Iterator.Sample;
public interface Iterator {
boolean hasNext();
Object next();
}
package org.goahead.Iterator.Sample;
public interface Aggregate {
Iterator iterator();
}
实现类
package org.goahead.Iterator.Sample;
public class BookShelf2 implements Aggregate {
private final Book[] books;
private int last = 0;
public void appendBook(Book book) {
books[last] = book;
last++;
}
public int getLength() {
return last;
}
public BookShelf2(int size) {
this.books = new Book[size];
}
@Override
public Iterator iterator() {
return new BookShelfIterator2();
}
private class BookShelfIterator2 implements Iterator {
private int index = 0;
@Override
public boolean hasNext() {
return index < last;
}
@Override
public Object next() {
Book book = books[index];
index++;
return book;
}
}
}