当前位置:编程学习 > JAVA >>

迭代器模式(Iterator)

@@@模式定义:
提供一种方法顺序访问一个聚合对象中的各个元素,而又不需暴露该对象的内部表示。

@@@练习示例:
工资表数据的整合

@@@示例代码:
\pattern\PayModel.java

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package pattern; 
 
/**
 * 工资描述模型对象
 */ 
public class PayModel { 
    /**
     * 支付工资的人员
     */ 
    private String userName; 
     
    /**
     * 支付工资的数额
     */ 
    private double pay; 
 
    public String getUserName() { 
        return userName; 
    } 
 
    public void setUserName(String userName) { 
        this.userName = userName; 
    } 
 
    public double getPay() { 
        return pay; 
    } 
 
    public void setPay(double pay) { 
        this.pay = pay; 
    } 
     
    public String toString() { 
        return "userName=" + userName + ", pay=" + pay; 
    } 

package pattern;

/**
 * 工资描述模型对象
 */
public class PayModel {
    /**
     * 支付工资的人员
     */
 private String userName;
 
 /**
  * 支付工资的数额
  */
 private double pay;

 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public double getPay() {
  return pay;
 }

 public void setPay(double pay) {
  this.pay = pay;
 }
 
 public String toString() {
  return "userName=" + userName + ", pay=" + pay;
 }
}

 

\pattern\Iterator.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[java]
package pattern; 
 
/**
 * 迭代器接口,定义访问和遍历元素的操作
 */ 
public inte易做图ce Iterator { 
    /**
     * 移动到聚合对象的第一个位置
     */ 
    public void first(); 
     
    /**
     * 移动到聚合对象的下一个位置
     */ 
    public void next(); 
     
    /**
     * 判断是否已经移动到聚合对象的最后一个位置
     * @return true 表示已经移动到聚合对象的最后一个位置
     *         false 表示还没有移动到聚合对象的最后一个位置
     */ 
    public boolean isDone(); 
     
    /**
     * 获取迭代的当前元素
     * @return 迭代的当前元素
     */ 
    public Object currentItem(); 

package pattern;

/**
 * 迭代器接口,定义访问和遍历元素的操作
 */
public inte易做图ce Iterator {
    /**
     * 移动到聚合对象的第一个位置
     */
 public void first();
 
 /**
  * 移动到聚合对象的下一个位置
  */
 public void next();
 
 /**
  * 判断是否已经移动到聚合对象的最后一个位置
  * @return true 表示已经移动到聚合对象的最后一个位置
  *         false 表示还没有移动到聚合对象的最后一个位置
  */
 public boolean isDone();
 
 /**
  * 获取迭代的当前元素
  * @return 迭代的当前元素
  */
 public Object currentItem();
}

\pattern\CollectionIteratorImpl.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package pattern; 
 
/**
 * 用来实现访问Collection集合的迭代接口,为了外部统一访问方式
 */ 
public class CollectionIteratorImpl implements Iterator { 
    /**
     * 用来存放被迭代的聚合对象
     */ 
    private PayManager aggregate = null; 
     
    /**
     * 用来记录当前迭代到的位置索引
     * -1表示刚开始的时候,迭代器指向对和对象第一个对象之前
     */ 
    private int index = -1; 
     
    public CollectionIteratorImpl(PayManager aggregate) { 
        this.aggregate = aggregate; 
    } 
 
    @Override 
    public void first() { 
        index = 0; 
    } 
 
    @Override 
    public void next() { 
        if (index < this.aggregate.size()) { 
            index = index + 1; 
        } 
    } 
     
    @Override 
    public boolean isDone() { 
        if (index == this.aggregate.size()) { 
            return true; 
        } 
         
        return false; 
    } 
 
    @Override 
    public Object currentItem() { 
        return this.aggregate.get(index); 
    } 

package pattern;

/**
 * 用来实现访问Collection集合的迭代接口,为了外部统一访问方式
 */
public class CollectionIteratorImpl implements Iterator {
 /**
     * 用来存放被迭代的聚合对象
     */
 private PayManager aggregate = null;
 
 /**
  * 用来记录当前迭代到的位置索引
  * -1表示刚开始的时候,迭代器指向对和对象第一个对象之前
  */
 private int index = -1;
 
 public Collectio

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,