概念
- 主要用来遍历 集合/ 容器 中的元素;屏蔽掉底层对象的实现不同;
- 迭代器模式属于行为型模式;
demo
package com.example.demo.designpattern;
public class Iterator {
public static void main(String[] args) {
Container<String> stringArrList = new ArrList<>();
for (int i = 0; i < 12; i++) {
stringArrList.add("str_" + i);
}
Itr it = stringArrList.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
interface Itr {
boolean hasNext();
Object next();
}
interface Container<E>{
void add(E e);
Itr iterator();
}
class ArrList<E> implements Container<E>{
private Object[] eleArr = new Object[10];
int index;
@Override
public void add(E e) {
if(index >= eleArr.length){
Object[] newEleArr = new Object[eleArr.length *2];
System.arraycopy(eleArr, 0, newEleArr, 0, eleArr.length);
eleArr = newEleArr;
}
eleArr[index] = e;
index++;
}
@Override
public Itr iterator() {
return new ArrIterator();
}
class ArrIterator implements Itr{
int currentInd = 0;
@Override
public boolean hasNext() {
return currentInd < index;
}
@Override
public Object next() {
Object e = eleArr[currentInd];
currentInd++;
return e;
}
}
}