设计模式(十九)iterator(于C++过时)

xiaoxiao2021-02-28  84

使用场景: 1.对于集合对象,不暴露内部结构时,可以让外部客户透明的访问其中包含的元素 2.同时使得同一种算法能够在多种集合对象上进行操作 定义:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定) 该对象的内部表示

3.c++的iterator基于模板。而不是该设计模式

iterator设计模式代码:

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; } }

转载请注明原文地址: https://www.6miu.com/read-45031.html

最新回复(0)