设计模式-迭代器模式

迭代器模式思维导图
迭代器模式思维导图

设计模式-迭代器模式
1、定义

提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
(将遍历集合的任务交给迭代器。)

2、分类&别名

分类:行为型模式
别名:游标

3、优点

优点:
用户使用迭代器访问集合中的对象,不需要知道这些对象在集合中是如何表示的;
可同时使用多个迭代器遍历一个集合。
简化聚合接口;
方便添加新的聚合类或者迭代器类;
支持以不同的方式遍历一个聚合对象。

4、适用场景

希望对遍历不同的集合提供一个统一接口;
让用户访问集合中的对象,但不想暴露对象在集合中的存储结构。

5、UML类图

迭代器模式UML类图
四种角色:
集合 Aggregate:规定具体集合需实现的操作。
迭代器 Iterator:规定遍历具体集合的方法。
具体集合 ConcreteAggregate:设置一个方法返回针对该集合的具体迭代器。
具体迭代器 ConcreteIterator

6、代码实现
//step1. 集合 Aggregate:规定具体集合需实现的操作
interface Aggregate {
	public Iterator createIterator();
}
//step2. 迭代器 Iterator:规定遍历具体集合的方法
interface Iterator {
	public Object next();
	public boolean hasNext();
}
//step3. 具体集合 ConcreteAggregate:设置一个方法返回针对该集合的具体迭代器
class ConcreteAggregate implements Aggregate {
	private Object[] tv = {"cctv-1", "cctv-2", "cctv-3"};
	public Iterator createIterator() {
		return new ConcreteIterator();
	}
	//step4. 具体迭代器 ConcreteIterator
	class ConcreteIterator implements Iterator {
		public int cursorIndex = 0;
		public Object next() {
			if(this.hasNext())
				return tv[cursorIndex++];
			return null;
		}
		public boolean hasNext() {
			if(cursorIndex < tv.length)
				return true;
			return false;
		}
	}
}
//step5. Demo
public class TestAwen {
	public static void main(String[] args) {
		Aggregate aggregate = new ConcreteAggregate();
		Iterator iterator = aggregate.createIterator();
		while (iterator.hasNext())
			System.out.println(iterator.next().toString());
	}
}

运行结果截图
迭代器模式运行结果截图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值