程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java應用設計形式中迭代器形式構建項目標代碼構造示例

Java應用設計形式中迭代器形式構建項目標代碼構造示例

編輯:關於JAVA

Java應用設計形式中迭代器形式構建項目標代碼構造示例。本站提示廣大學習愛好者:(Java應用設計形式中迭代器形式構建項目標代碼構造示例)文章只能為提供參考,不一定能成為您想要的結果。以下是Java應用設計形式中迭代器形式構建項目標代碼構造示例正文


迭代器(Iterator)形式,又叫做游標(Cursor)形式。GOF給出的界說為:供給一種辦法拜訪一個容器(container)對象中各個元素,而又不需裸露該對象的外部細節。
 
迭代器形式由以下腳色構成:
迭代器腳色(Iterator):迭代器腳色擔任界說拜訪和遍歷元素的接口。
詳細迭代器腳色(Concrete Iterator):詳細迭代器腳色要完成迭代器接口,並要記載遍歷中確當前地位。
容器腳色(Container):容器腳色擔任供給創立詳細迭代器腳色的接口。
詳細容器腳色(Concrete Container):詳細容器腳色完成創立詳細迭代器腳色的接口。這個詳細迭代器腳色與該容器的構造相干。

Java完成示例
類圖:

代碼:

/** 
 * 自界說聚集接口, 相似java.util.Collection 
 * 用於數據存儲 
 * @author stone 
 * 
 */ 
public interface ICollection<T> { 
   
  IIterator<T> iterator(); //前往迭代器 
  void add(T t); 
  T get(int index); 
} 
/** 
 * 自界說迭代器接口 相似於java.util.Iterator 
 * 用於遍歷聚集類ICollection的數據 
 * @author stone 
 * 
 */ 
public interface IIterator<T> { 
  boolean hasNext(); 
  boolean hasPrevious(); 
  T next(); 
  T previous(); 
} 
/** 
 * 聚集類, 依附於MyIterator 
 * @author stone 
 */ 
public class MyCollection<T> implements ICollection<T> { 
 
  private T[] arys; 
  private int index = -1; 
  private int capacity = 5; 
   
  public MyCollection() { 
    this.arys = (T[]) new Object[capacity]; 
  } 
   
  @Override 
  public IIterator<T> iterator() { 
    return new MyIterator<T>(this); 
  } 
   
  @Override 
  public void add(T t) { 
    index++; 
    if (index == capacity) { 
      capacity *= 2; 
      this.arys = Arrays.copyOf(arys, capacity); 
       
    } 
    this.arys[index] = t; 
  } 
   
  @Override 
  public T get(int index) { 
    return this.arys[index]; 
  } 
   
} 


/* 
 * 如有新的存儲構造,可new 一個ICollection, 對應的 new 一個IIterator來完成它的遍歷 
 */ 
@SuppressWarnings({"rawtypes", "unchecked"}) 
public class Test { 
  public static void main(String[] args) { 
    ICollection<Integer> collection = new MyCollection<Integer>(); 
    add(collection, 3, 5, 8, 12, 3, 3, 5); 
    for (IIterator<Integer> iterator = collection.iterator(); iterator.hasNext();) { 
      System.out.println(iterator.next()); 
    } 
     
    System.out.println("-------------"); 
     
    ICollection collection2 = new MyCollection(); 
    add(collection2, "a", "b", "c", 3, 8, 12, 3, 5); 
    for (IIterator iterator = collection2.iterator(); iterator.hasNext();) { 
      System.out.println(iterator.next()); 
    } 
     
  } 
   
  static <T> void add(ICollection<T> c, T ...a) { 
    for (T i : a) { 
      c.add(i); 
    } 
  } 
} 

打印:

3 
5 
8 
12 
3 
3 
5 
------------- 
a 
b 
c 
3 
8 
12 
3 
5 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved