迭代器模式

迭代器模式(Iterator pattern)

迭代器模式是一种行为型设计模式。

迭代器模式用来顺序访问一个聚合对象中的个个元素,而又无需暴露该对象的内部表示。

该模式的适用性

1)访问一个聚合对象的内容无需暴露它的内部表示

2)支持聚合对象的多种遍历

3)为遍历不同的聚合结构提供一个统一的接口

该模式的参与者

1)迭代器(Iterator):定义访问和遍历的接口

2)具体迭代器(ConcreteIterator):实现迭代器接口

3)聚合(Aggregate):定义创建相应迭代对象的接口

4)具体聚合(ConcreteAggregate):实现创建相应迭代器的接口,该操作返回一个适当的实例(ConcreteLterator)

模式关系图

代码实现

Iterator接口

public interface Iterator{
	boolean hasNext();
	Object next();
}

Aggregate接口

public interface Aggregate {
	Iterator iterator();
}

ConcreteAggregate类和内部类ConcreteIterator

package test;

public class ConcreteAggregate implements Aggregate {
	private Integer[] data = {1,2,3,4};
	
	@Override
	public Iterator iterator() {
		return new ConcreteIterator();
	}
	
	private class ConcreteIterator implements Iterator{
		int index = 0;
		@Override
		public boolean hasNext() {
			if( index < data.length) {
				return true;
			}else {
				return false;
			}
		}
		@Override
		public Object next() {
			Object obj = data[index];
			index++;
			return obj;
		}
	}
}

要迭代一个聚合对象,不需要知道具体的迭代实现,通过迭代方法返回一个内部实现迭代器接口的特有的迭代器,通过该迭代器可以实现迭代类中的聚合对象。不需知道具体的聚合对象和具体的迭代方法的实现。通过迭代器实现的方法最终完成迭代行为。

迭代Demo

public class IteratorDemo {
	public static void main(String[] args) {
		// 创建带有聚合对象的类,内部迭代器接口实现类实现对聚合对象遍历的迭代器接口方法
		ConcreteAggregate ct = new ConcreteAggregate();
		// 得到迭代器接口实现类对象
		Iterator iterator = ct.iterator();
		// 迭代
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值