迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
迭代器模式Demo:
/** * 2018年4月3日下午9:48:05 */ package com.Designpattern; /** * @author xinwenfeng * */ public class TestIterator { /** * @param args */ public static void main(String[] args) { String[] strs = {"BM42","theone","AB"}; MyAggregate ma = new AggregateImpl(strs); MyIterator mi = ma.getIterator(); while(mi.hasnext()) { System.out.println(mi.next()); } } } //抽象迭代器类 interface MyIterator{ Object first(); Object next(); Object current(); boolean hasnext(); } //抽象聚集类 interface MyAggregate{ MyIterator getIterator(); } class IteratorImpl implements MyIterator{ private String[] strings = null; private int index = -1; public IteratorImpl(String[] ss) { strings = ss; } @Override public Object first() { if(null == strings) { return null; }else if(strings.length>0){ return strings[0]; }else { return null; } } @Override public Object next() { index++; return strings[index]; } @Override public Object current() { return strings[index]; } @Override public boolean hasnext() { if(null == strings) { return false; }else { return index < strings.length-1; } } } class AggregateImpl implements MyAggregate{ private String[] strs = null; public AggregateImpl(String[] strings) { strs = strings; } @Override public MyIterator getIterator() { return new IteratorImpl(strs); } }
结果: