一.什么是迭代器模式
迭代器模式是一种行为性设计模式,提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要是为了遍历集合数据
二.迭代器模式怎么写
给大家上一张迭代器的UML类图。
写个样例瞧一瞧
/**
* 迭代器接口
**/
public interface Iterator {
boolean hasNext();
Object next();
}
/**
* 抽象整合数据
**/
public interface Aggregate {
Iterator getIterator();
}
/**
* 具体的整合数据和具体的迭代器
**/
public class ConcreteAggregate implements Aggregate{
String content[]= {"1","2","3"};
@Override
public Iterator getIterator() {
return new MyIterator();
}
class MyIterator implements Iterator{
private int index;
@Override
public boolean hasNext() {
if(index<content.length) {
return true;
}
return false;
}
@Override
public Object next() {
if(hasNext()) {
return content[index++];
}
return null;
}
}
}
测试代码
public class Client {
public static void main(String[] args) {
Aggregate aggregate=new ConcreteAggregate();
Iterator iterator=aggregate.getIterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
打印结果
1
2
3
三.小结
迭代器模式主要是为了遍历不同的整合数据对象。有点: 1、它支持以不同的方式遍历一个聚合对象。 2、迭代器简化了聚合类。 3、在同一个聚合上可以有多个遍历。 4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。如果您觉得本文对您有所帮助,欢迎点赞或留下评论,如果觉得本文还要不足之处,也欢迎您在下方吐槽,谢谢!