前言
本章讲解设计模式中迭代器设计模式的相关知识
方法
1.概念
说起迭代器,想必大家并不陌生。迭代器的作用在于方便对象的遍历。我们使用List和Set的时候,也有过使用迭代器的经历。
那么迭代器设计模式就是具体的实现。
2.迭代器设计模式的具体实现思路
1)创建相关工程
2)创建迭代器接口
package iterator;
/**
* 自定义迭代器类
* @author jwang
*
*/
public interface MyIterator {
public boolean hasNext();//是否有下一个对象
public Object next();//获取下一个元素
}
3)创建自定义的聚合类
package iterator;
import java.util.ArrayList;
import java.util.List;
/**
* 定义聚合类
* @author jwang
*
*/
public class Aggregation {
private List<Object> list = new ArrayList<>();
public List<Object> getList() {
return list;
}
public void setList(List<Object> list) {
this.list = list;
}
public void addObj(Object object){
this.list.add(object);
}
public void removeObj(Object object){
this.list.remove(object);
}
public MyIterator iterator(){
return new RealIterator();
}
//使用内部类实现迭代器
private class RealIterator implements MyIterator{
private int cursor;//游标
@Override
public boolean hasNext() {
if(cursor<list.size()){
return true;
}
return false;
}
@Override
public Object next() {
return list.get(cursor++);
}
}
}
4)编写测试代码进行测试
package iterator;
public class Test {
public static void main(String[] args) {
//获取自定义聚合对象
Aggregation aggregation = new Aggregation();
aggregation.addObj("aa");
aggregation.addObj("bb");
aggregation.addObj("cc");
//获得迭代器对象
MyIterator iterator = aggregation.iterator();
//遍历元素
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
测试结果如下:
由此可见,我们封装了一层聚合类也实现了迭代器的功能!