迭代器模式(Iterator) (二)

2014-11-24 10:14:28 · 作者: · 浏览: 1
ate;
}

@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);
}
}
\pattern\ArrayIteratorImpl.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package pattern;

/**
* 用来实现访问数组的迭代接口
*/
public class ArrayIteratorImpl implements Iterator {
/**
* 用来存放被迭代的聚合对象
*/
private SalaryManager aggregate = null;

/**
* 用来记录当前迭代到的位置索引
* -1表示刚开始的时候,迭代器指向对和对象第一个对象之前
*/
private int index = -1;

public ArrayIteratorImpl(SalaryManager 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;

/**
* 用来实现访问数组的迭代接口
*/
public class ArrayIteratorImpl implements Iterator {
/**
* 用来存放被迭代的聚合对象
*/
private SalaryManager aggregate = null;

/**
* 用来记录当前迭代到的位置索引
* -1表示刚开始的时候,迭代器指向对和对象第一个对象之前
*/
private int index = -1;

public ArrayIteratorImpl(SalaryManager 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);
}
}
\pattern\Aggregate.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package pattern;

public abstract class Aggregate {
/**
* 工厂方法,创建相应迭代器对象的接口
* @return 相应迭代器对象的接口
*/
public abstract Iterator createIterator();
}

package pattern;

public abstract class Aggregate {
/**
* 工厂方法,创建相应迭代器对象的接口
* @return 相应迭代器对象的接口
*/
public abstract Iterator createIterator();
}
\pattern\PayManager.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package pattern;

import java.util.ArrayList;
import java.util.List;

/**
* 客户方已有的工资管理对象
*/
public class PayManager extends Aggregate {
/**
* 聚合对象,这里是Java的集合对象
*/
private List list = new ArrayList();

/**
* 获取工资列表
*/
public List getPayList() {
return list;
}

/**
* 计算工资,其实应该有很多参数,此处从简
*/
public void calcPay() {
// 计算工资,并把工资信息填充到工资列表中
// 为了测试,输入些数据进去
PayModel pm1 = new PayModel();
pm1.setPay(3000);
pm1.setUserName("张三");
PayModel pm2 = new PayModel();
pm2.setPay(5000);
pm2.setUserName("李四");

list.add(pm1);
list.add(pm2);
}

public Iterator createIterator() {
return new CollectionIteratorImpl(this);
}

public Object get(int index) {
Object retObj = null;
if (index < this.list.size()) {
retObj = this.list.get(index);
}