*/
public class ConcreteAggregate extends Aggregate {
private Object[] objArray = null;
/**
* ¹¹Ôì·½·¨£¬´«Èë¾ÛºÏ¶ÔÏóµÄ¾ßÌåÄÚÈÝ
*/
public ConcreteAggregate(Object[] objArray) {
this.objArray = objArray;
}
@Override
public Iterator createIterator() {
return new ConcreteIterator(this);
}
/**
* ȡֵ·½·¨£ºÏòÍâ½çÌṩ¾Û¼¯ÔªËØ
*/
public Object getElement(int index) {
if (index < objArray.length) {
return objArray[index];
} else {
return null;
}
}
/**
* ȡֵ·½·¨£ºÏòÍâ½çÌṩ¾Û¼¯µÄ´óС
*/
public int size() {
return objArray.length;
}
}
¡¡³éÏóµü´ú×Ó½ÇÉ«Àà
[java]
package com.bankht.Iterator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-6-29 ÉÏÎç11:03:35
*
* @Àà˵Ã÷ £º³éÏóµü´ú×Ó½ÇÉ«Àà
*/
public interface Iterator {
/**
* µü´ú·½·¨£ºÒƶ¯µ½µÚÒ»¸öÔªËØ
*/
public void first();
/**
* µü´ú·½·¨£ºÒƶ¯µ½ÏÂÒ»¸öÔªËØ
*/
public void next();
/**
* µü´ú·½·¨£ºÊÇ·ñΪ×îºóÒ»¸öÔªËØ
*/
public boolean isDone();
/**
* µü´ú·½·¨£º·µ»¹µ±Ç°ÔªËØ
*/
public Object currentItem();
}
package com.bankht.Iterator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-6-29 ÉÏÎç11:03:35
*
* @Àà˵Ã÷ £º³éÏóµü´ú×Ó½ÇÉ«Àà
*/
public interface Iterator {
/**
* µü´ú·½·¨£ºÒƶ¯µ½µÚÒ»¸öÔªËØ
*/
public void first();
/**
* µü´ú·½·¨£ºÒƶ¯µ½ÏÂÒ»¸öÔªËØ
*/
public void next();
/**
* µü´ú·½·¨£ºÊÇ·ñΪ×îºóÒ»¸öÔªËØ
*/
public boolean isDone();
/**
* µü´ú·½·¨£º·µ»¹µ±Ç°ÔªËØ
*/
public Object currentItem();
}
¡¡¡¡¾ßÌåµü´ú×Ó½ÇÉ«Àà
[java]
package com.bankht.Iterator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-6-29 ÉÏÎç11:03:59
*
* @Àà˵Ã÷ £º¾ßÌåµü´ú×Ó½ÇÉ«Àà
*/
public class ConcreteIterator implements Iterator {
// ³ÖÓб»µü´úµÄ¾ßÌåµÄ¾ÛºÏ¶ÔÏó
private ConcreteAggregate agg;
// ÄÚ²¿Ë÷Òý£¬¼Ç¼µ±Ç°µü´úµ½µÄË÷ÒýλÖÃ
private int index = 0;
// ¼Ç¼µ±Ç°¾Û¼¯¶ÔÏóµÄ´óС
private int size = 0;
public ConcreteIterator(ConcreteAggregate agg) {
this.agg = agg;
this.size = agg.size();
index = 0;
}
/**
* µü´ú·½·¨£º·µ»¹µ±Ç°ÔªËØ
*/
@Override
public Object currentItem() {
return agg.getElement(index);
}
/**
* µü´ú·½·¨£ºÒƶ¯µ½µÚÒ»¸öÔªËØ
*/
@Override
public void first() {
index = 0;
}
/**
* µü´ú·½·¨£ºÊÇ·ñΪ×îºóÒ»¸öÔªËØ
*/
@Override
public boolean isDone() {
return (index >= size);
}
/**
* µü´ú·½·¨£ºÒƶ¯µ½ÏÂÒ»¸öÔªËØ
*/
@Override
public void next() {
if (index < size) {
index++;
}
}
}
package com.bankht.Iterator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-6-29 ÉÏÎç11:03:59
*
* @Àà˵Ã÷ £º¾ßÌåµü´ú×Ó½ÇÉ«Àà
*/
public class ConcreteIterator implements Iterator {
// ³ÖÓб»µü´úµÄ¾ßÌåµÄ¾ÛºÏ¶ÔÏó
private ConcreteAggregate agg;
// ÄÚ²¿Ë÷Òý£¬¼Ç¼µ±Ç°µü´úµ½µÄË÷ÒýλÖÃ
private int index = 0;
// ¼Ç¼µ±Ç°¾Û¼¯¶ÔÏóµÄ´óС
private int size = 0;
public ConcreteIterator(ConcreteAggregate agg) {
this.agg = agg;
this.size = agg.size();
index = 0;
}
/**
* µü´ú·½·¨£º·µ»¹µ±Ç°ÔªËØ
*/
@Override
public Object currentItem() {
return agg.getElement(index);
}
/**
* µü´ú·½·¨£ºÒƶ¯µ½µÚÒ»¸öÔªËØ
*/
@Override
public void first() {
index = 0;
}
/**
* µü´ú·½·¨£ºÊÇ·ñΪ×îºóÒ»¸öÔªËØ
*/
@Override
public boolean isDone() {
return (index >= size);
}
/**
* µü´ú·½·¨£ºÒƶ¯µ½ÏÂÒ»¸öÔªËØ
*/
@Override
public void next() {
if (index < size) {
index++;
}
}
}
¡¡¡¡¿Í»§¶ËÀà
[java]
package com.bankht.Iterator;
/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-6-29 ÉÏÎç11:04:28
*
* @Àà˵Ã÷ £º¿Í»§¶ËÀà
*/
public class Client {
public void operation() {
Object[] objArray = { "One", "Two", "Three", "Four", "Five", "Six" };
// ´´½¨¾ÛºÏ¶ÔÏó
Aggregate agg = new ConcreteAggregate(objArray);
// Ñ»·Êä³ö¾ÛºÏ¶ÔÏóÖеÄÖµ
Iterator it = agg.creat