1、迭代器模式的简介:
a、场景:
- 提供一种可以遍历聚合对象的方式。又称为:游标 cursor 模式。
- 聚合对象:存储数据
- 迭代器:遍历数据
2、简单的代码示例:
a、新建一个迭代器 MyIterator 接口,并创建一个 ConcreteMyAggregate 具体的聚合类,在聚合类中创建一个实现了 MyIterator 接口的内部类,这个内部类有一个 cursor 游标的成员变量(方便使用外部类的属性。) (迭代器的三个核心方法,next()、hasNext()、getCurrentObj() 方法。)
package com.geeklicreed.iterator;public interface MyIterator { void first(); void next(); boolean hashNext(); boolean isFirst(); boolean isLast(); Object getCurrentObj();}
package com.geeklicreed.iterator;import java.util.ArrayList;import java.util.List;public class ConcreteMyAggregate { private List
3、看看 Client 测试类中输出的结果(类图不太好画,就不花了,看看就懂了把)
package com.geeklicreed.iterator;import java.util.ArrayList;public class Client { public static void main(String[] args) { ConcreteMyAggregate aggregate = new ConcreteMyAggregate(new ArrayList()); aggregate.addList("极客微信条"); aggregate.addList("熊猫烧香:如果我带来的只是灾难,是还愿不愿意陪我走完"); MyIterator iterator = aggregate.createIterator(); while(iterator.hashNext()){ System.out.println(iterator.getCurrentObj()); iterator.next(); } /*输出结果为: 极客微信条 熊猫烧香:如果我带来的只是灾难,是还愿不愿意陪我走完*/ }}
4、开发中常见的场景:
- JDK 内置的迭代器(List/Set)