本文共 1977 字,大约阅读时间需要 6 分钟。
目录
includeusing namespace std;typedef int Object ;#define SIZE 5 //注意类的顺序 class MyIterator{public: virtual void First() = 0; virtual void Next() = 0; virtual bool IsDone() = 0; virtual Object CurrentItem() = 0;};class Aggregate{public: virtual Object getItem(int index) = 0; virtual MyIterator *CreateIterator() = 0; virtual int getSize() = 0;};class ContreteIterator : public MyIterator{public: ContreteIterator(Aggregate *ag) { _ag = ag; _idx = 0; } ~ContreteIterator() { _ag = NULL; _idx = 0; } virtual void First() { _idx = 0; } virtual void Next() { if (_idx < _ag->getSize()) { _idx ++; } } virtual bool IsDone() { return (_idx == _ag->getSize()); } virtual Object CurrentItem() { return _ag->getItem(_idx); }protected:private: int _idx; Aggregate *_ag;};class ConcreteAggregate : public Aggregate{public: ConcreteAggregate() { for (int i=0; i CreateIterator(); //通过迭代器 遍历 集合 for (; !(it->IsDone()); it->Next() ) { cout << it->CurrentItem() << " "; } //清理相关资源 delete it; delete ag;}void main(){ main21(); system("pause"); return ;}
【注】参考传智扫地僧C++设计模式
转载地址:http://gaur.baihongyu.com/