`

迭代子模式(Iterator)

 
阅读更多

一、核心思想

迭代子模式又称Cursor模式,是对象的行为模式。迭代子模式可以顺序地访问聚集中的对象而不必显露聚集的内部对象。

包含:聚集对象 和 迭代器对象。

 

关系图:

 

代码:

两个接口:

  1. public interface Collection {  
  2.       
  3.     public Iterator iterator();  
  4.       
  5.     /*取得集合元素*/  
  6.     public Object get(int i);  
  7.       
  8.     /*取得集合大小*/  
  9.     public int size();  
  10. }  
 
  1. public interface Iterator {  
  2.     //前移  
  3.     public Object previous();  
  4.       
  5.     //后移  
  6.     public Object next();  
  7.     public boolean hasNext();  
  8.       
  9.     //取得第一个元素  
  10.     public Object first();  
  11. }  

两个实现:

 
  1. public class MyCollection implements Collection {  
  2.   
  3.     public String string[] = {"A","B","C","D","E"};  
  4.     @Override  
  5.     public Iterator iterator() {  
  6.         return new MyIterator(this);  
  7.     }  
  8.   
  9.     @Override  
  10.     public Object get(int i) {  
  11.         return string[i];  
  12.     }  
  13.   
  14.     @Override  
  15.     public int size() {  
  16.         return string.length;  
  17.     }  
  18. }  
  1. public class MyIterator implements Iterator {  
  2.   
  3.     private Collection collection;  
  4.     private int pos = -1;  
  5.       
  6.     public MyIterator(Collection collection){  
  7.         this.collection = collection;  
  8.     }  
  9.       
  10.     @Override  
  11.     public Object previous() {  
  12.         if(pos > 0){  
  13.             pos--;  
  14.         }  
  15.         return collection.get(pos);  
  16.     }  
  17.   
  18.     @Override  
  19.     public Object next() {  
  20.         if(pos<collection.size()-1){  
  21.             pos++;  
  22.         }  
  23.         return collection.get(pos);  
  24.     }  
  25.   
  26.     @Override  
  27.     public boolean hasNext() {  
  28.         if(pos<collection.size()-1){  
  29.             return true;  
  30.         }else{  
  31.             return false;  
  32.         }  
  33.     }  
  34.   
  35.     @Override  
  36.     public Object first() {  
  37.         pos = 0;  
  38.         return collection.get(pos);  
  39.     }  
  40.   
  41. }  

测试类:

 
  1. public class Test {  
  2.   
  3.     public static void main(String[] args) {  
  4.         Collection collection = new MyCollection();  
  5.         Iterator it = collection.iterator();  
  6.           
  7.         while(it.hasNext()){  
  8.             System.out.println(it.next());  
  9.         }  
  10.     }  
  11. }  

 二、何时使用

迭代子的作用就是用来方便查询一个集合中的数据。

优点:

简化了聚集的界面

因为每一个聚集对象可以有多个迭代子对象,每个迭代子状态时独立的。

由于遍历算法被封装在迭代子角色里,因此迭代的算法可以独立于聚集对象。

 

 

三、java中的应用

Java集合类迭代子Iterator 和 Enumeration

JDBC查询数据集迭代子ResultSet

JSP分页

 

分享到:
评论

相关推荐

    IteratorPattern 迭代设计模式

    迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...

    Iterator Pattern(迭代模式)

    在Java中,迭代器模式的实现通常使用`Iterable`接口和`Iterator`接口。`Iterable`接口定义了一个`iterator()`方法,返回一个`Iterator`实例。`Iterator`接口则包含`hasNext()`和`next()`方法。 ```java public ...

    C++面向对象23种设计模式实现源码DesignPattern.zip

    22.迭代子模式Iterator展示了如何在不暴露容器内部结构的情况下,通过迭代器遍历各种类型的容器,实现了泛型遍历,这是C++标准库中容器常用的设计。 3. **命令模式(Command Pattern)**:命令模式将请求封装为一个...

    组合模式二叉树,前序、中序、后续,迭代器模式访问遍历

    在这个主题中,我们主要探讨了如何利用组合模式(Composite Pattern)构建二叉树,并通过迭代器模式(Iterator Pattern)来实现对树的遍历,包括前序、中序和后序遍历。这些是设计模式中的经典应用,对于理解和掌握...

    23个设计模式之一的迭代器模式-极客学院-java-课件代码,

    `Collection`接口扩展了迭代器的概念,它的子接口如`List`、`Set`都提供了`iterator()`方法来返回一个迭代器实例。 迭代器模式有以下优点: 1. **分离遍历操作和聚合对象**:迭代器模式使得可以独立于聚合对象改变...

    AndriodDesignPattern:二十三种设计模式(每个模式完成了一个小Demo)

    迭代子模式 Iterator     ChainOfResponsibility     CommandPattern 命令模式     Memento 备忘录模式   行为型模式end 创建型模式start 共五种,我把抽象工厂和工厂模式合在一起了 BuildPattern ...

    java迭代子模式详解

    迭代子模式(Iterator Pattern)是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如List、Set和Map等接口的实现。 在Java中,迭代器模式的...

    PHP设计模式之迭代器模式的深入解析

    迭代器模式(Iterator Pattern)是一种行为设计模式,它提供了一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。PHP作为一门面向对象的编程语言,其标准库(SPL)中就内置了对迭代器模式...

    Java与模式 学习

    Java与模式:迭代子(Iterator)模式、合成(Composite)模式、抽象工厂模式等

    05-容易被忽略的迭代器(1).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    java设计模式--迭代器设计模式.docx

    迭代器模式是软件设计模式中的一种行为模式,其主要目的是为了在不暴露聚合对象内部结构的情况下,提供一种顺序访问聚合对象中各个元素的方式。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等...

    Iterator详解

    迭代器设计模式遵循了“访问者”模式的原则,使得代码更加灵活和可维护。以下是对Java中Iterator的详细解释: 1. **接口定义**: Java的迭代器接口位于`java.util`包中,它提供了遍历集合元素的基本方法。迭代器的...

    树的构件与遍历---使用组合模式与迭代模式

    在这个话题中,我们将深入探讨如何利用组合模式(Composite Pattern)和迭代模式(Iterator Pattern)来构建和遍历树结构。 **组合模式**是面向对象设计模式的一种,它允许我们处理部分和整体的关系。在树形结构中...

    01-制造工具的工厂模式(1).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    MyBatis框架迭代器模式实现原理解析

    在MyBatis框架中,迭代器模式被用来遍历和访问SqlMapConfig.xml或MapperXML文件中的属性和子节点,使得程序员可以方便地处理配置文件中的数据。 在MyBatis中,`PropertyTokenizer`类实现了`Iterator...

    09-通过容器实现的外观模式(2).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    00-初探 Laravel 和其中的设计模式(3).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    12-附录 1 设计模式的七大原则(1).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    07-使用代理快速接入第三方库(1).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

    08-责任链和管道的协作(1).html

    迭代子模式( Iterator ) 责任链模式( Chain of Responsibility ) 命令模式( Command ) 备忘录模式( Memento ) 状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( ...

Global site tag (gtag.js) - Google Analytics