迭代器设计模式(商品迭代示例)
0. UML结构图
1. 商品迭代示例Code
1.1 迭代器接口
public interface MyIterator {
void first();
boolean hasNext();
boolean isFirst();
boolean isLast();
Object next();
}
1.2 商品聚合类与内部类商品迭代器
public class ProductAggregate {
private List<Object> list = new ArrayList<>();
public void add(Object obj) {
list.add(obj);
}
public void remove(Object obj) {
list.remove(obj);
}
public MyIterator iterator() {
return new ProductIterator();
}
private class ProductIterator implements MyIterator {
private int cursor;
@Override
public void first() {
cursor = 0;
}
@Override
public boolean hasNext() {
return cursor < list.size();
}
@Override
public boolean isFirst() {
return cursor == 0;
}
@Override
public boolean isLast() {
return cursor == list.size() - 1;
}
@Override
public Object next() {
Object obj = list.get(cursor);
cursor++;
return obj;
}
}
}
2. 商品迭代示例Test
public class IteratorTest {
public static void main(String[] args) {
ProductAggregate aggregate = new ProductAggregate();
aggregate.add("java");
aggregate.add("python");
aggregate.add("scala");
aggregate.add("golang");
MyIterator iterator = aggregate.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}