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

定义:

它提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的内部细节。


迭代器是为容器服务的,迭代器模式为了解决遍历容器中的元素而诞生的,从而使容器只管增减元素就可以了,需要遍历时,交给迭代器处理。

其通用类图如下:


实现代码如下:

public interface Iterator {
	public Object next();
	public boolean hasNext();
	public boolean remove();
}
public class ConcreteIterator implements Iterator {

	private Vector vector=new Vector();
	
	int cursor=0;//当前游标
	
	public ConcreteIterator(Vector vector) {
		this.vector = vector;
	}

	//返回下一个元素
	@Override
	public Object next() {
		Object obj=null;
		if(this.hasNext()){
			obj=this.vector.get(cursor++);
		}
		
		return obj;
	}

	//判断是否还有元素
	@Override
	public boolean hasNext() {
		if(this.cursor==vector.size())
			return false;
		else
			return true;
	}

	//删除元素
	@Override
	public boolean remove() {
		this.vector.remove(this.cursor);
		return true;
	}

}
public interface Aggregate {
	public void add(Object object);
	public void remove(Object object);
	public Iterator iterator();
}
public class ConcreteAggregate implements Aggregate {

	private Vector vector=new Vector();
	
	@Override
	public void add(Object object) {
		this.vector.add(object);
	}

	@Override
	public void remove(Object object) {
		this.vector.remove(object);
	}

	//返回针对该容器的迭代器
	@Override
	public Iterator iterator() {
		return new ConcreteIterator(this.vector);
	}
}
public class Client {
	
	public static void main(String[] args) {
		Aggregate agg=new ConcreteAggregate();
		
		agg.add("suo");
		agg.add("piao");
		agg.add("datou");
		
		Iterator iterator=agg.iterator();
		while(iterator.hasNext()){
			System.out.println(iterator.next());
		}
	}
}


java已经把迭代器模式溶入到了API中,比如各种集合类型都实现了Iteratable接口,使我们对集合的遍历相当方便,但是我们在这里还是要理解迭代器模式的思想,它主要是将一个针对容器的非常常用的功能,进行了封装,使得容器可以专职做好自己的本职工作,也使我们的工作更加高效了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值