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

2014-11-24 08:31:50 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 3
eIterator();
while (!it.isDone()) {
System.out.println(it.currentItem());
it.next();
}
}

public static void main(String[] args) {

Client client = new Client();
client.operation();
}

}
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.createIterator();
while (!it.isDone()) {
System.out.println(it.currentItem());
it.next();
}
}

public static void main(String[] args) {

Client client = new Client();
client.operation();
}

}

¡¡ÉÏÃæµÄÀý×ÓÊ×ÏÈ´´½¨ÁËÒ»¸ö¾Û¼¯ÀàʵÀý£¬È»ºóµ÷Óþۼ¯¶ÔÏóµÄ¹¤³§·½·¨createIterator()ÒԵõ½Ò»¸öµü´ú×Ó¶ÔÏó¡£Ôڵõ½µü´ú×ÓµÄʵÀýºó£¬¿Í»§¶Ë¿ªÊ¼µü´ú¹ý³Ì£¬´òÓ¡³öËùÓеľۼ¯ÔªËØ¡£

ÍâÙ÷µü´ú×ÓµÄÒâÒå
¡¡¡¡Ò»¸ö³£³£»áÎʵÄÎÊÌâÊÇ£º¼ÈÈ»°×Ïä¾Û¼¯ÒѾ­ÏòÍâ½çÌṩÁ˱éÀú·½·¨£¬¿Í»§¶ËÒѾ­¿ÉÒÔ×ÔÐнøÐеü´úÁË£¬ÎªÊ²Ã´»¹ÒªÓ¦Óõü´ú×Óģʽ£¬²¢´´½¨Ò»¸öµü´ú×Ó¶ÔÏó½øÐеü´úÄØ£¿

¡¡¡¡¿Í»§¶Ëµ±È»¿ÉÒÔ×ÔÐнøÐеü´ú£¬²»Ò»¶¨·ÇµÃÐèÒªÒ»¸öµü´ú×Ó¶ÔÏó¡£µ«ÊÇ£¬µü´ú×Ó¶ÔÏóºÍµü´úģʽ»á½«µü´ú¹ý³Ì³éÏ󻯣¬½«×÷Ϊµü´úÏû·ÑÕߵĿͻ§¶ËÓëµü´ú¸ºÔðÈ˵ĵü´ú×ÓÔðÈηָô¿ª£¬Ê¹µÃÁ½Õß¿ÉÒÔ¶ÀÁ¢µÄÑÝ»¯¡£ÔÚ¾Û¼¯¶ÔÏóµÄÖÖÀà·¢Éú±ä»¯£¬»òÕßµü´úµÄ·½·¨·¢Éú¸Ä±äʱ£¬µü´ú×Ó×÷Ϊһ¸öÖнé²ã¿ÉÒÔÎüÊձ仯µÄÒòËØ£¬¶ø±ÜÃâÐ޸Ŀͻ§¶Ë»òÕß¾Û¼¯±¾Éí¡£

¡¡¡¡´ËÍ⣬Èç¹ûϵͳÐèҪͬʱÕë¶Ô¼¸¸ö²»Í¬µÄ¾Û¼¯¶ÔÏó½øÐеü´ú£¬¶øÕâЩ¾Û¼¯¶ÔÏóËùÌṩµÄ±éÀú·½·¨ÓÐËù²»Í¬Ê±£¬Ê¹Óõü´ú×ÓģʽºÍÒ»¸öÍâ½çµÄµü´ú×Ó¶ÔÏóÊÇÓÐÒâÒåµÄ¡£¾ßÓÐͬһµü´ú½Ó¿ÚµÄ²»Í¬µü´ú×Ó¶ÔÏó´¦Àí¾ßÓв»Í¬±éÀú½Ó¿ÚµÄ¾Û¼¯¶ÔÏó£¬Ê¹µÃϵͳ¿ÉÒÔʹÓÃÒ»¸öͳһµÄµü´ú½Ó¿Ú½øÐÐËùÓеĵü´ú¡£

ºÚÏä¾Û¼¯ÓëÄÚÙ÷µü´ú×Ó
¡¡¡¡Èç¹ûÒ»¸ö¾Û¼¯µÄ½Ó¿ÚûÓÐÌṩÐ޸ľۼ¯ÔªËصķ½·¨£¬ÕâÑùµÄ½Ó¿Ú¾ÍÊÇËùνµÄÕ­½Ó¿Ú¡£

¡¡¡¡¾Û¼¯¶ÔÏóΪµü´ú×Ó¶ÔÏóÌṩһ¸ö¿í½Ó¿Ú£¬¶øÎªÆäËû¶ÔÏóÌṩһ¸öÕ­½Ó¿Ú¡£»»ÑÔÖ®£¬¾Û¼¯¶ÔÏóµÄÄÚ²¿½á¹¹Ó¦µ±¶Ôµü´ú×Ó¶ÔÏóÊʵ±¹«¿ª£¬ÒÔ±ãµü´ú×Ó¶ÔÏóÄܹ»¶Ô¾Û¼¯¶ÔÏóÓÐ×ã¹»µÄÁ˽⣬´Ó¶ø¿ÉÒÔ½øÐеü´ú²Ù×÷¡£µ«ÊÇ£¬¾Û¼¯¶ÔÏóÓ¦µ±±ÜÃâÏòÆäËûµÄ¶ÔÏóÌṩÕâЩ·½·¨£¬ÒòΪÆäËû¶ÔÏóÓ¦µ±¾­¹ýµü´ú×Ó¶ÔÏó½øÐÐÕâЩ¹¤×÷£¬¶ø²»ÊÇÖ±½Ó²Ù¿Ø¾Û¼¯¶ÔÏó¡£

\

¡¡¡¡ÔÚJAVAÓïÑÔÖУ¬ÊµÏÖË«ÖØ½Ó¿ÚµÄ°ì·¨¾ÍÊǽ«µü´ú×ÓÀàÉè¼Æ³É¾Û¼¯ÀàµÄÄÚ²¿³ÉÔ±Àà¡£ÕâÑùµü´ú×Ó¶ÔÏ󽫿ÉÒÔÏñ¾Û¼¯¶ÔÏóµÄÄÚ²¿³ÉÔ±Ò»Ñù·ÃÎʾۼ¯¶ÔÏóµÄÄÚ²¿½á¹¹¡£ÏÂÃæ¸ø³öÒ»¸öʾÒâÐÔµÄʵÏÖ£¬ËµÃ÷ÕâÖÖË«ÖØ½Ó¿ÚµÄ½á¹¹Ê±ÔõôÑù²úÉúµÄ£¬ÒÔ¼°Ê¹ÓÃÁËË«ÖØ½Ó¿Ú½á¹¹Ö®ºóµü´ú×ÓģʽµÄʵÏÖ·½°¸¡£ÕâÖÖͬʱ±£Ö¤¾Û¼¯¶ÔÏóµÄ·â×°ºÍµü´ú×Ó¹¦ÄܵÄʵÏֵķ½°¸½Ð×öºÚÏäʵÏÖ·½°¸¡£

¡¡¡¡ÓÉÓÚµü´ú×ÓÊǾۼ¯µÄÄÚ²¿À࣬µü´ú×Ó¿ÉÒÔ×ÔÓÉ·ÃÎʾۼ¯µÄÔªËØ£¬ËùÒÔµü´ú×Ó¿ÉÒÔ×ÔÐÐʵÏÖµü´ú¹¦Äܲ¢¿ØÖƶԾۼ¯ÔªËصĵü´úÂß¼­¡£ÓÉÓÚµü´ú×ÓÊÇÔÚ¾Û¼¯µÄ½á¹¹Ö®ÄÚ¶¨ÒåµÄ£¬Òò´ËÕâÑùµÄµü´ú×ÓÓÖ½Ð×öÄÚÙ÷µü´ú×Ó£¨Intrinsic Iterator£©¡£

¡¡¡¡ÎªÁË˵Ã÷ºÚÏä·½°¸µÄϸ½Ú£¬ÕâÀï¸ø³öÒ»¸öʾÒâÐԵĺÚÏäʵÏÖ¡£ÔÚÕâ¸öʵÏÖÀ¾Û¼¯ÀàConcreteAggregateº¬ÓÐÒ»¸öÄÚ²¿³ÉÔ±ÀàConcreteIterator£¬Ò²¾ÍÊÇʵÏÖÁ˳éÏóµü´ú×ӽӿڵľßÌåµü´ú×ÓÀ࣬ͬʱ¾Û¼¯²¢²»ÏòÍâ½çÌṩ·ÃÎÊ×Ô¼ºÄÚ²¿ÔªËصķ½·¨¡£

\

¡¡¡¡Ô´´úÂë
¡¡¡¡³éÏó¾Û¼¯½ÇÉ«À࣬Õâ¸ö½ÇÉ«¹æ¶¨³öËùÓеľßÌå¾Û¼¯±ØÐëʵÏֵĽӿڡ£µü´ú×ÓģʽҪÇó¾Û¼¯¶ÔÏó±ØÐëÓÐÒ»¸ö¹¤³§·½·¨£¬Ò²¾ÍÊÇcreateIterator()·½·¨£¬ÒÔÏòÍâ½çÌṩµü´ú×Ó¶ÔÏóµÄʵÀý¡£

[java]
public abstract class Aggregate {
/**
* ¹¤³§·½·¨£¬´´½¨ÏàÓ¦µü´ú×Ó¶ÔÏóµÄ½Ó¿Ú
*/
public abstract Iterator createIterator();
}
public abstract class Aggregate {
/**
* ¹¤³§·½·¨£¬´´½¨ÏàÓ¦µü´ú×Ó¶ÔÏóµÄ½Ó¿Ú
*/
public abstract Iterator createIterator();
}

¡¡¡¡³éÏóµü´ú×Ó½ÇÉ«Àà

[java]
public interface Iterator {
/**
* µü´ú·½·¨£ºÒƶ¯µ½µÚÒ»¸öÔªËØ
*/
public void first();
/**
* µü´ú·½·¨£ºÒƶ¯µ½ÏÂÒ»¸öÔªËØ
*/
public void next();
/**
* µü´ú·½·¨£ºÊÇ·ñΪ×îºóÒ»¸öÔªËØ
*/
public boolean isDone();
/**
* µü´ú·½·¨£º·µ»¹µ±Ç°ÔªËØ
*/
public Object currentItem();
}
public interface Iterator {
/**
* µü´ú·½·¨£ºÒƶ¯µ½µÚÒ»¸öÔªËØ
*/
public void first();
/**
* µü´ú·½·¨£ºÒƶ¯µ½ÏÂÒ»¸öÔªËØ
*/
public void next();
/**
* µü´ú·½·¨£ºÊÇ·ñΪ×îºóÒ»¸öÔªËØ
*/
public boolean isDone();
/**
* µü´ú·½·¨£º·µ»¹µ±Ç°ÔªËØ
*/
public Object currentItem();
}

¡¡¾ßÌå¾Û¼¯½ÇÉ«À࣬ʵÏÖÁ˳éÏó¾Û¼¯½ÇÉ«ËùÒªÇóµÄ½Ó¿Ú£¬Ò²¾ÍÊÇcreateIterator()·½·¨¡£´ËÍ⣬¾Û¼¯ÀàÓÐÒ»¸öÄÚ²¿³ÉÔ±ÀàConcreteIterator£¬Õâ¸öÄÚ²¿ÀàʵÏÖÁ˳éÏóµü´ú×Ó½ÇÉ«Ëù¹æ¶¨µÄ½Ó¿Ú£»¶ø¹¤³§·½·¨createIterator()Ëù·µ»¹µÄ¾ÍÊÇÕâ¸öÄÚ²¿³ÉÔ±ÀàµÄʵÀý¡£

[java]
public class ConcreteAggregate extends Aggregate {

private Object[] objArray = null;
/**
* ¹¹Ôì·½·¨£¬´«Èë¾ÛºÏ¶ÔÏóµÄ¾ßÌåÄÚÈÝ
*/
public ConcreteAggregate(Object[] objArray){
this.objArray = objArray;
}

@Override
public Iterator createIterator() {

re