一,概述
定義:提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴漏該物件的內部表示。
作用:客戶端可以不必知道資料集合的結構,而通過迭代器的介面來運算元據,不僅保護了資料結構,同時可以自定義資料的訪問方式。
其實c++中的stl模板類中大量用到了此種設計模式!
二,示例
問題:售票員清點上車人數,然後挨個人遍歷,讓其買票。
class program //客戶端
請買車票!", i.currentitem());
i.next();
}console.read();}}
abstract class aggregate//抽象聚集類
class concreteaggregate : aggregate//具體聚集類
public int count
}public object this[int index]
set }}
abstract class iterator//抽象迭代器類(方便實現各種迭代策略)
class concreteiterator : iterator//具體迭代器類(公升序訪問)
public override object first()
public override object next()
return ret;
}public override object currentitem()
public override bool isdone()
}class concreteiteratordesc : iterator//具體迭代器類(降序訪問)
public override object first()
public override object next()
return ret;
}public override object currentitem()
public override bool isdone()
}
設計模式 迭代器模式
迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...
設計模式 迭代器模式
iterator,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部 透明地訪問集合內部的資料。iterator迭代器抽象類 迭代器抽象類 abstract clas...
設計模式 迭代器模式
迭代器模式在我們日常程式設計中使用非常頻繁,像list map 陣列等都會用到迭代器模式。迭代器模式屬於行為型模式,它用於順序訪問集合物件的元素,不需要知道集合物件的底層表示。在迭代器模式結構圖中包含如下幾個角色 它支援以不同的方式遍歷乙個聚合物件。迭代器簡化了聚合類。在同乙個聚合上可以有多個遍歷。...