Java设计模式之迭代器模式
2017-09-14 09:35
507 查看
迭代器模式(iterator)
概念:提供一种一致的方法来顺序遍历一个容器中的所有元素
适用:
1.访问一个聚合对象的内容而无需暴露它的内部表示。
2.支持对聚合对象的多种遍历。
3.为遍历不同的聚合结构提供一个统一的接口(即,多态迭代)。
迭代器模式的优缺点
迭代器模式的优点:
简化了遍历方式,对于对象集合的遍历,还是比较麻烦的,对于数组或者有序列表,我们尚可以通过游标来取得,但用户需要在对集合了解很清楚的前提下,自行遍历对象,但是对于hash表来说,用户遍历起来就比较麻烦了。而引入了迭代器方法后,用户用起来就简单的多了。 可以提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进行遍历了。 封装性良好,用户只需要得到迭代器就可以遍历,而对于遍历算法则不用去关心。
迭代器模式的缺点: 对于比较简单的遍历(像数组或者有序列表),使用迭代器方式遍历较为繁琐,大家可能都有感觉,像ArrayList,我们宁可愿意使用for循环和get方法来遍历集合。
示例代码:
/** * 迭代器接口 */ public interface Iterator { //前移 public Object previous(); //后移 public Object next(); public boolean hasNext(); //取得第一个元素 public Object first(); }
/** * 聚集接口 */ public interface Aggregate { public Iterator CreateIterator(); /*取得集合元素*/ public Object get(int i); /*取得集合大小*/ public int size(); }
/** * 具体迭代器类 */ public class ConcreteIterator implements Iterator { private Aggregate collection; private int pos = -1; public ConcreteIterator(Aggregate collection){ this.collection = collection; } public Object previous() { if(pos > 0){ pos--; } return collection.get(pos); } public Object next() { if(pos<collection.size()-1){ pos++; } return collection.get(pos); } public boolean hasNext() { if(pos<collection.size()-1){ return true; }else{ return false; } } public Object first() { pos = 0; return collection.get(pos); } }
/** * 具体聚集类 */ public class ConcreteAggregate implements Aggregate { public String string[] = {"A","B","C","D","E"}; public Iterator CreateIterator() { return new ConcreteIterator(this); // 把数组传进 } public Object get(int i) { return string[i]; } public int size() { return string.length; } }
/** * 迭代器模式的测试 * 实现 :遍历集合 */ public class Test { public static void main(String[] args) { Aggregate aggregate = new ConcreteAggregate(); Iterator it = aggregate.CreateIterator(); while(it.hasNext()){ System.out.println(it.next()); } } }
相关文章推荐
- Java设计模式——迭代器模式
- Java设计模式之——迭代器模式
- JAVA 设计模式 迭代器模式
- Java设计模式——迭代器模式(Iterator Pattern)
- Java开发中的23种设计模式之十六:迭代器模式(Iterator)
- Java设计模式——迭代器模式(Iterator Pattern)
- 设计模式学习笔记---迭代器模式iterator pattern(Java版)
- (四)Java设计模式--迭代器模式
- 【GOF23设计模式】_迭代器模式_JDK内置迭代器_内部类迭代器JAVA244
- Java/Android 设计模式系列(20)--迭代器模式
- java设计模式之迭代器模式
- Java设计模式——迭代器模式
- java设计模式_迭代器模式
- java设计模式_迭代器模式
- Java设计模式之--迭代器模式(Iterator)
- Java设计模式五:迭代器模式(Iterator)
- (四)Java设计模式--迭代器模式
- JAVA的23种设计模式---迭代器模式
- 深入浅出Java设计模式之迭代器模式
- 深入浅出Java设计模式之迭代器模式