¡¶JAVAÓëģʽ¡·µÚ19Ìì¨Dµü´ú×Óģʽ (¶þ)

2014-11-24 08:31:50 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 2
¹©¾Û¼¯ÔªËØ £¬¶ø·½·¨size()ÏòÍâ½çÌṩ¾Û¼¯µÄ´óСµÈ¡£
*/
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