Iterator模式
2017-05-03 00:00
148 查看
摘要: 设计模式-Iterator模式
//Iterator模式 typedef int Type; class Iterater { public: Iterater(){} virtual ~Iterater(){} virtual bool HasNext()=0; virtual Type Next()=0; }; class Container { public: Container(){} virtual ~Container(){} public: virtual Iterater* GetIterator()=0; virtual int GetSize()=0; virtual Type GetItem(int index)=0; }; class ConcreateIterater: public Iterater { public: ConcreateIterater(Container* pContainer):m_pContainer(pContainer),m_nIndex(0){} virtual ~ConcreateIterater(){} public: virtual bool HasNext() { if (m_nIndex<m_pContainer->GetSize()) { return true; } else { return false; } } virtual Type Next() { if (HasNext()) { return m_pContainer->GetItem(m_nIndex++); } else { return (Type)(-1); } } private: Container *m_pContainer; int m_nIndex; }; class ConcreateContainer: public Container { public: //friend class ConcreateIterater; ConcreateContainer(int nSize) { m_nSize=nSize; m_pData=new Type[m_nSize]; } virtual ~ConcreateContainer() { if (m_pData) { delete[]m_pData; m_pData=nullptr; } } Iterater* GetIterator() { return new ConcreateIterater(this); } int GetSize() { return m_nSize; } Type GetItem(int index) { return m_pData[index]; } private: size_t m_nSize; Type *m_pData; }; //Iterator模式 int _tmain(int argc, _TCHAR* argv[]) { Container *pc=new ConcreateContainer(100); Iterater *pIt=pc->GetIterator(); for (;pIt->HasNext();) { Type value=pIt->Next(); printf("%d\n",value); } delete pc; delete pIt; getchar(); return 0; }
相关文章推荐
- Java源码分析:深入探讨Iterator模式(转自http://blog.csdn.net/kalex)
- 设计模式(24)-迭代器模式(Iterator)
- (23)枚举器模式-Iterator Pattern -使用 foreach 语句、实现多个枚举器
- 枚举器模式-Iterator Pattern -使用 foreach 语句、实现多个枚举器
- 设计模式笔记(9 INTERPRETER & ITERATOR)
- 深入探讨Iterator模式
- .Net中的设计模式——Iterator模式
- 深入探讨Iterator模式
- Net中的设计模式——Iterator模式
- 設計模式之Iterator
- Java源码分析:深入探讨Iterator模式
- [转]深入探讨Iterator模式
- Java源码分析:深入探讨Iterator模式 (转载)
- Java源码分析:深入探讨Iterator模式
- Java源码分析:深入探讨Iterator模式
- 设计模式之Iterator——点名篇
- EmptyIterator 与 Dangling Composite错误模式
- 推荐一篇文章,感觉学完Iterator模式后应当读一读
- 设计模式笔记(9 INTERPRETER & ITERATOR)
- .Net中的设计模式——Iterator模式(对理解IEnumerable接口有帮助)