提供一种方法顺序访问一个聚合对象中的各个元素,而又不.暴露(稳定)该对象的内部表示。

对于C++来说这个设计模式已经过时了,C++已经有STL,它采用模板方式来实现,而模板是编译时多态,不是运行时多态,相比之下少了性能消耗。
template<typename T>class Iterator{public: virtual void first() = 0; virtual void next() = 0; virtual bool isDone() const = 0; virtual T& current() = 0;};template<typename T>class MyCollection{ public: Iterator<T> GetIterator(){ //... } };template<typename T>class CollectionIterator : public Iterator<T>{ MyCollection<T> mc;public: CollectionIterator(const MyCollection<T> & c): mc(c){ } void first() override { } void next() override { } bool isDone() const override{ } T& current() override{ }};void MyAlgorithm(){ MyCollection<int> mc; Iterator<int> iter= mc.GetIterator(); for (iter.first(); !iter.isDone(); iter.next()){ cout << iter.current() << endl; } }