迭代模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代模式相关的知识,希望对你有一定的参考价值。
定义:
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示
应用场景:
1. 访问一个聚合对象的内容而无需暴露它的内部表示(当不想暴漏对象内部的数据和结构,通过实现迭代器,将数据放到迭代器中提供给使用者,符合类单一原则和开闭原则)
2.支持对聚合对象的多种遍历
3.为遍历不同的聚合结构提供一个统一的接口(但出现需要获取不同对象的数据时,每个对象数据格式不一样,此刻可以要求每个对象实现迭代器,这样达到统一)
uml:
代码实例:
public interface Iterator { public boolean hasNext(); public Object next(); public boolean remove(); } public class MyIterator implements Iterator { String[] dataArray = null; int point = 0; int size = 0; public MyIterator(String[] dataArray, int size) { this.dataArray = dataArray.clone(); this.size = size; } @Override public boolean hasNext() { return point < size ? true : false; } @Override public Object next() { // TODO Auto-generated method stub if (point <= size) { point++; return dataArray[point - 1]; } else { throw new NullPointerException(); } } @Override public boolean remove() { // TODO Auto-generated method stub return false; } } public interface Iaggregate { public Iterator getIterator(); } public class AggregateA implements Iaggregate{ static String [] data=new String[100]; static{ data[0]="a"; data[1]="b"; data[2]="c"; data[3]="d"; data[4]="e"; data[5]="f"; data[6]="g"; } @Override public Iterator getIterator() { // TODO Auto-generated method stub return new MyIterator(data, 7); } } public class test { public static void main(String[] args) { Iterator it=new AggregateA().getIterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
以上是关于迭代模式的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在这个 python 片段中得到 float 是不可迭代的? [复制]