首页 > 代码库 > 迭代模式
迭代模式
定义:
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示
应用场景:
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=http://www.mamicode.com/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()); } } }
迭代模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。