}
@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);
}