迭代器模式(Iterator) (三)

2014-11-24 10:14:28 · 作者: · 浏览: 2

return retObj;
}

public int size() {
return this.list.size();
}
}

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

return retObj;
}

public int size() {
return this.list.size();
}
}
\pattern\SalaryManager.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package pattern;

/**
* 被客户方收购的那个公司的工资管理类
*/
public class SalaryManager extends Aggregate {
/**
* 用数组管理
*/
private PayModel[] pms = null;

/**
* 获取工资列表
* @return 工资列表
*/
public PayModel[] getPays() {
return pms;
}

/**
* 计算工资,其实应该有很多参数,此处从简
*/
public void calcSalary() {
// 计算工资,并把工资信息填充到工资列表中
// 为了测试,输入些数据进去
PayModel pm1 = new PayModel();
pm1.setPay(2200);
pm1.setUserName("王五");
PayModel pm2 = new PayModel();
pm2.setPay(3600);
pm2.setUserName("赵六");

pms = new PayModel[2];
pms[0] = pm1;
pms[1] = pm2;
}

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

public Object get(int index) {
Object retObj = null;
if (index < pms.length) {
retObj = pms[index];
}

return retObj;
}

public int size() {
return this.pms.length;
}
}

package pattern;

/**
* 被客户方收购的那个公司的工资管理类
*/
public class SalaryManager extends Aggregate {
/**
* 用数组管理
*/
private PayModel[] pms = null;

/**
* 获取工资列表
* @return 工资列表
*/
public PayModel[] getPays() {
return pms;
}

/**
* 计算工资,其实应该有很多参数,此处从简
*/
public void calcSalary() {
// 计算工资,并把工资信息填充到工资列表中
// 为了测试,输入些数据进去
PayModel pm1 = new PayModel();
pm1.setPay(2200);
pm1.setUserName("王五");
PayModel pm2 = new PayModel();
pm2.setPay(3600);
pm2.setUserName("赵六");

pms = new PayModel[2];
pms[0] = pm1;
pms[1] = pm2;
}

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

public Object get(int index) {
Object retObj = null;
if (index < pms.length) {
retObj = pms[index];
}

return retObj;
}

public int size() {
return this.pms.length;
}
}
\user\Client.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package user;

import pattern.Iterator;
import pattern.PayManager;
import pattern.SalaryManager;

public class Client {
public static void main(String[] args) {
// 访问集团的工资列表
PayManager payManager = new PayManager();
// 先计算再获取
payManager.calcPay();
System.out.println("集团工资列表:");
test(payManager.createIterator());

// 访问新收购公司的工资列表
SalaryManager salaryManager = n