设计模式学习笔记之迭代器模式

所谓迭代器模式,即将迭代遍历的方法抽象出来,用一个迭代器类来专门负责迭代遍历。

首先定义迭代器的接口:

package IteratorPolicy;
/*
 * author:Tammy Pi
 * function:迭代器的接口
 */
public interface Iterator<T> {

	public int first();
	public int next();
	public boolean isLast();
	public T getCurrentItem();
}

迭代器的实现:

package IteratorPolicy;
/*
 * author:Tammy Pi
 * function:迭代器的实现类
 */
public class IteratorImp<T> implements Iterator{

	private T[] elements = null;
	private int current = 0;
	
	//构造函数
	public IteratorImp(T[] elements){
		
		this.elements = elements;
	}
	
	public int first() {
		
		if(elements.length>0){
			
			return current = 0;
		}
		return -1;
	}

	public T getCurrentItem() {
		
		if(current==-1){
			
			return null;
		}
		return elements[current];
	}

	public boolean isLast() {
		
		if(current+1==elements.length){
			
			return true;
		}
		return false;
	}

	public int next() {
	
		if(current+1<elements.length){
			
			return current = current + 1;
		}
		return -1;
	}
}

其实就是第一个元素,查找下一个元素的坐标,判断是否到最末位置,以及获得当前的元素。

以下是对迭代器的测试:

package IteratorPolicy;
/*
 * author:Tammy Pi
 * function:测试迭代器的类
 */
public class TestIterator {

	public static void main(String[] args){
		
		Integer[] a = {2,3,1,5,4};
		IteratorPolicy.Iterator<Integer> iterator = new IteratorImp<Integer>(a);
		
		int tag = iterator.first();
		
		if(tag!=-1){
			
			do{
				
				System.out.print(iterator.getCurrentItem()+" ");
			}while(iterator.next()!=-1);
		}
	}
}

JAVA类库中已经包含Iterator了,所以迭代器设计模式目前的学习性大于其实用性。

其实学习时,很难想象这是设计模式之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值