熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Java設計模式之Iterator模式介紹

2013-11-15 12:15:14  來源: JSP教程 
所謂Iterator模式即是Iterator為不同的容器提供一個統一的訪問方式本文以java中的容器為例模擬Iterator的原理需要的朋友可以參考下  

  首先定義一個容器Collection接口

復制代碼 代碼如下:
package comnjuptzhblearniterator;
public interface Collection {
 void add(Object o);
 int size();
 Iterator iterator();
}

  
定義一個Iterator迭代器的接口

復制代碼 代碼如下:
package comnjuptzhblearniterator;
public interface Iterator {
 Object next();
 boolean hasNext();
}

  
定義一個ArrayList實現Collection接口並寫一個實現了Iterator接口的內部類

復制代碼 代碼如下:
package comnjuptzhblearniterator;
import comnjuptzhblearniteratorCollection;
public class ArrayList implements Collection {
 Object[] objects = new Object[];
 int index = ;
 public void add(Object o) {
  if(index == objectslength) {
   Object[] newObjects = new Object[objectslength * ];
   Systemarraycopy(objects newObjects objectslength);
   objects = newObjects;
  }
  objects[index] = o;
  index ++;
 }

 public int size() {
  return index;
 }

 public Iterator iterator() {

  return new ArrayListIterator();
 }

 private class ArrayListIterator implements Iterator {
  private int currentIndex = ;
  @Override
  public boolean hasNext() {
   if(currentIndex >= index) return false;
   else return true;
  }
  @Override
  public Object next() {
   Object o = objects[currentIndex];
   currentIndex ++;
   return o;
  }

 }
}

  
編寫測試程序TestMain

復制代碼 代碼如下:
package comnjuptzhblearniterator;
import comnjuptzhblearniteratorArrayList;
public class TestMain {
 public static void main(String[] args) {
  Collection c = new ArrayList();
  for(int i=; i<; i++) {
   cadd("string "+i);
  }
  Systemoutprintln(csize());
  Iterator it = citerator();
  while(ithasNext()) {
   Object o = itnext();
   Systemoutprintln(otoString() + " ");
  }
 }
}

  
運行結果

復制代碼 代碼如下:

string
string
string
string
string
string
string
string
string
string
string
string
string
string
string

  
從以上可以看出設計模式到處用到面向對象中的多態接口調用子類中的函數點擊下載源代碼


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20579.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.