设计模式C++迭代器模式
来源:互联网 发布:crm软件系统ppt 编辑:程序博客网 时间:2024/06/10 12:59
迭代器模式:提供一种方法顺序访问一个聚合对象中个各个元素,而不暴露该对像的内部表示.
模式的动机:
(1)一个聚合对象,如一个列表(List)或者一个集合(Set),应该提供一种方法来让别人可以访问
它的元素,而又不需要暴露它的内部结构。
(2)针对不同的需要,可能还要以不同的方式遍历整个聚合对象,但是我们并不希望在聚合对象的
抽象层接口中充斥着各种不同遍历的操作。
(3)怎样遍历一个聚合对象,又不需要了解聚合对象的内部结构,还能够提供多种不同的遍历方式,
这就是迭代器模式所要解决的问题。
1、创建Iterator.h
#ifndef _ITERATOR_H_#define _ITERATOR_H_#include <vector>using namespace std; //使用类模板template <class Type>class Iterator{public : virtual bool hasNext()=0; virtual Type next()=0;};template <class Type>class ConcreteAggregate{private: vector<Type> _object;public: void AddObject(Type obj) { _object.push_back(obj); } Type& operator[](int index) { return _object[index]; } int size() { return _object.size(); } };template <class Type>class AggregateIterator:public Iterator<Type>{private : ConcreteAggregate<Type> *agg; int _index;public : AggregateIterator(ConcreteAggregate<Type> *agg) { this->agg=agg; _index=0; } virtual bool hasNext() { return _index<agg->size()?true:false; } virtual Type next() { return (*agg)[_index++]; }};#endif
2、Client.cpp
#include <iostream> #include "Iterator.h"using namespace std; /* object可以是任意类型的变量 */ typedef double object; int main() { ConcreteAggregate<object> *objects =new ConcreteAggregate<object>(); objects->AddObject(1.2); objects->AddObject(2.3); objects->AddObject(4.5); AggregateIterator<object> *iter = new AggregateIterator<object> (objects); while(iter->hasNext()) { cout<<iter->next()<<" "; } cout<<endl; delete objects; delete iter; system("pause"); return 0; }
0 0
- 设计模式_迭代器模式(C++)
- C语言设计模式:迭代器
- 设计模式----工厂模式(c++)
- 【设计模式C++】工厂模式
- 设计模式-迭代器模式
- 设计模式 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 【设计模式】迭代器模式
- 设计模式-迭代器模式
- 设计模式- 迭代器模式
- 设计模式 - 迭代器模式
- 设计模式:迭代器模式
- 设计模式 - 迭代器模式
- 设计模式-迭代器模式
- 设计模式--迭代器模式
- 设计模式---迭代器模式
- 设计模式---迭代器模式
- C++ 类对象的内存分配
- spring整合和事物策略
- android 特殊用户通知用法汇总--Notification源码分析
- Map.Entry
- matlab图像边缘检测
- 设计模式C++迭代器模式
- HDOJ 1431-素数回文【删除大量无关数据】
- Android:自定义标题栏
- spring笔记
- myeclipse和svn通过代理方式更新代码
- 赶集网mysql开发36军规
- 共同学习Java源码--常用数据类型--String(八)
- linux下安装jdk
- aop