?**定義**:它提供一個方法訪問一個容器對象中的各個元素,而又不需要暴露該對象的內部細節。
這個在javaAPI中已經封裝的很好了,任何一個容器的遍歷都可以使用Iterator來迭代。

## 一般模式:
Iterator抽象迭代器
抽象迭代器負責定義訪問和遍歷元素的接口,基本上有三個方法。next()、hasNext()、remove();
ConcreteIterator具體迭代器
具體迭代器角色要實現迭代器的接口,完成容器元素的遍歷。
Aggregate抽象容器
容器角色負責提供創建具體迭代器角色的接口,必然提供一個類似iterator()方法
Concrete Aggregate具體容器。
具體容器實現容器接口定義的方法,創建出容納迭代器的對象
~~~
public class IteratorTest {
public static void main(String[] args) {
//模擬容器,添加一些信息
Aggreragte aggVector = new ConcreteAggregate();
aggVector.add("lzl");
aggVector.add("xy");
aggVector.add("daughter");
//遍歷
Iterator it = aggVector.iterator();
while(it.hasNext()){
//如果有下一個。獲取信息
String info = (String) it.next();
System.out.println("------"+info);
}
}
}
/**
* 抽象的迭代器,只提供基本的方法。
*
* @author admin
*
*/
interface Iterator{
//刪除
boolean remove();
//是否還有下一個
boolean hasNext();
//找到下一個元素。
Object next();
}
/**
* 具體接口的實現方法
* @author admin
*
*/
class ConcreteIterator implements Iterator{
private Vector vector ;
private int cursor = 0;
//構造函數,將需要遍歷的vector對象傳遞進來
public ConcreteIterator(Vector vector) {
this.vector = vector;
}
@Override
public boolean remove() {
boolean flag = (boolean) this.vector.remove(this.cursor);
return flag;
}
@Override
public boolean hasNext() {
if(vector.size() != cursor){
return true;
}
return false;
}
@Override
public Object next() {
//如果還有下一個,就返回
if(this.hasNext()){
return this.vector.get(cursor++);
}
return null;
}
}
/**
* 抽想的接口容器類,例如java中的List集合等.
* @author admin
*
*/
interface Aggreragte{
//增加元素
boolean add(Object obj);
//創建迭代器的接口。
Iterator iterator();
//刪除元素
boolean remove(Object obj);
}
/**
* 具體的抽象容器接口實現類,例如java中的ArrayList集合。
* @author admin
*
*/
class ConcreteAggregate implements Aggreragte{
private Vector vector = new Vector();
@Override
public Iterator iterator() {
return new ConcreteIterator(this.vector);
}
@Override
public boolean add(Object obj) {
boolean flag = vector.add(obj);
return flag;
}
@Override
public boolean remove(Object obj) {
boolean flag = vector.remove(obj);
return flag;
}
}
~~~
- 前言
- 6大設計原則(一)---單一職責原則
- 6大設計原則(二)---里氏替換原則
- 6大設計原則(三)---依賴倒置原則
- 6大設計模式(四)----接口隔離原則
- 6大設計原則(五)---迪米特法則
- 6大設計原則(六)---開閉原則。
- 設計模式(一)---單例模式
- 設計模式(二)---工廠方法模式
- 設計模式(三)---抽象工廠模式
- 設計模式(四)---模板方法模式
- 設計模式(五)---建造者模式
- 設計模式(六)---代理模式
- 設計模式(七)---原型模式
- 設計模式(八)---中介者模式
- 設計模式(九)---命令模式
- 設計模式(十)---責任鏈模式
- 設計模式(十一)---裝飾模式
- 設計模式(十二)---策略模式
- 設計模式(十三)---適配器模式
- 設計模式(十四)---迭代器模式
- 設計模式(十五)---組合模式
- 設計模式(十六)---觀察者模式
- 設計模式(十七)---門面模式
- 設計模式(十八)---備忘錄模式
- 設計模式(十八)---訪問者模式
- 設計模式(二十)---狀態模式
- 設計模式(二十二)---享元模式
- 設計模式(二十三)---橋梁模式