JAVA設計模式(15):迭代器模式
阿新 • • 發佈:2018-12-29
迭代器模式是Java和.Net程式設計環境中非常常用的設計模式。此模式用於以順序方式訪問集合物件的元素,而不需要知道其底層表示。迭代器模式屬於行為模式類別。
實現例項
在這個例項中,將建立一個Iterator介面,它陳述了一個導航方法和一個Container介面,以及返回迭代器。 實現Container介面的具體類將負責實現Iterator介面並使用它。IteratorPatternDemo這是一個演示類,將使用一個具體的實現類-NamesRepository,列印一個儲存在NamesRepository集合中的Names。迭代器模式的實現例項結構如下圖中所示 -
第1步建立兩個簡單的介面,如下程式碼所示 -
Iterator.java
public interface Iterator {
public boolean hasNext();
public Object next();
}
Container.java
public interface Container {
public Iterator getIterator();
}
第2步建立實現Container介面的具體類。 這個類有一個內部類NameIterator,它實現了Iterator介面。
NameRepository.java
public class NameRepository implements Container { public String names[] = {"Robert" , "John" ,"Julie" , "Lora"}; @Override public Iterator getIterator() { return new NameIterator(); } private class NameIterator implements Iterator { int index; @Override public boolean hasNext() { if(index < names.length){ return true; } return false; } @Override public Object next() { if(this.hasNext()){ return names[index++]; } return null; } } }
第3步使用NameRepository獲取迭代器並列印其名稱。
IteratorPatternDemo.java
public class IteratorPatternDemo { public static void main(String[] args) { NameRepository namesRepository = new NameRepository(); for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){ String name = (String)iter.next(); System.out.println("Name : " + name); } } }
第4步驗證輸出,執行上面的程式碼得到以下結果 -
Name : Robert
Name : John
Name : Julie
Name : Lora