首页 > 代码库 > Java设计模式菜鸟系列(十一)迭代器模式建模与实现

Java设计模式菜鸟系列(十一)迭代器模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39807741


迭代器模式(Iterator):提供了一种方法顺序訪问一个聚合对象中的各个元素,而又不暴露其内部的表示。

一、uml建模:

技术分享


二、代码实现

/**
 * 演示样例:迭代器模式
 * 
 */

interface Iterator {
	/** 前移 */
	public Object previous();

	/** 后移 */
	public Object next();

	/** 推断是否有下一个元素 */
	public boolean hasNext();
}

interface Collection {
	public Iterator iterator();

	/** 取得集合中的某个元素 */
	public Object get(int i);

	/** 取得集合大小 */
	public int size();
}

/**
 * 集合
 */
class MyCollection implements Collection {
	private String[] strArray = { "aa", "bb", "cc", "dd" };

	@Override
	public Iterator iterator() {
		return new MyIterator(this);
	}

	@Override
	public Object get(int i) {
		return strArray[i];
	}

	@Override
	public int size() {
		return strArray.length;
	}

}

/**
 * 迭代器
 */
class MyIterator implements Iterator {
	private Collection collection;
	private int pos = -1;

	public MyIterator(Collection collection) {
		this.collection = collection;
	}

	@Override
	public Object previous() {
		if (pos > 0) {
			pos--;
		}
		return collection.get(pos);
	}

	@Override
	public Object next() {
		if (pos < collection.size() - 1) {
			pos++;
		}
		return collection.get(pos);
	}

	@Override
	public boolean hasNext() {
		if (pos < collection.size() - 1) {
			return true;
		}
		return false;
	}

}

/**
 * client測试类
 * 
 * @author Leo
 */
public class Test {
	public static void main(String[] args) {
		/**
		 * 实例化容器
		 */
		Collection collection = new MyCollection();
		/**
		 * 创建迭代器
		 */
		Iterator iterator = collection.iterator();
		/**
		 * 遍历集合中的元素
		 */
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

三、应用场景

遍历、訪问集合中的某个元素等


四、总结

迭代器模式就是顺序訪问集合中的对象,这句话包括两层意思:一是须要遍历的对象。即集合对象。二是迭代器对象,用于对集合对象进行遍历訪问。


Java设计模式菜鸟系列(十一)迭代器模式建模与实现