行为型--迭代器模式

概念


顺序访问集合对象的元素,且不需要知道集合对象的底层表示。

优点:

  1. 在不暴露集合的内部结构情况下,可以让外部代码透明地访问集合内部的数据。
  2. 将存储数据和遍历数据功能分开,简化了集合类。
  3. 在同一个集合上可以定义多种遍历方式。
  4. 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。

缺点:

  1. 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。

 

举例


public class Client {
	public static void main(String[] args) {
		NameRepository namesRepository = new NameRepository();
		for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){
			String name = (String)iter.next();
			System.out.println("Name : " + name);
		}  
	}
}
// 迭代器,定义一些方法以实现某种遍历
interface Iterator {
	public boolean hasNext();
	public Object next();
}
// 集合类
interface Container {
	public Iterator getIterator();
}
class NameRepository implements Container {
	public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};
	@Override
	public Iterator getIterator() {
		return new NameIterator();
	}
	// 迭代器的具体实现:内部类
	private class NameIterator implements Iterator {
		int index;
		@Override
		public boolean hasNext() {
			if(index < names.length){
				return true;
			}
			return false;
		}
		@Override
		public Object next() {
			if(this.hasNext()){
				return names[index++];
			}
			return null;
		}     
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值