Java設計模式
Java工廠設計模式
Java抽象工廠模式
Java單例模式
Java建造者(Builder)模式
Java原型模式
Java適配器模式
Java橋接模式
Java過濾器模式(條件模式)
Java組合模式
Java裝飾模式
Java門面模式(或外觀模式)
Java享元模式(Flyweight Pattern)
Java責任鏈模式
Java命令模式
Java迭代器模式
Java中介者模式(Mediator Pattern)
Java解釋器模式
Java備忘錄模式
Java觀察者模式
Java狀態模式
Java空對象模式
Java策略模式
Java模板模式
Java訪問者模式
Java MVC模式
Java業務代理模式
Java組合實體模式
Java數據訪問對象模式
Java前端控制器模式
Java攔截過濾器模式
Java服務定位器模式
Java傳輸對象模式
Java迭代器模式
迭代器模式是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