c++设计模式之迭代器模式
来源:互联网 发布:电脑如何连接手机网络 编辑:程序博客网 时间:2024/06/07 17:36
迭代器模式Iterator Pattern
定义:迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
适用场景:
1)访问一个聚合对象的内容而无需暴露它的内部表示,
2)支持对聚合对象的多种遍历,
3)为遍历不同的聚合结构提供一个统一的接口。
迭代器模式的类结构图:
兑现代码:
#include <iostream>using namespace std;typedef int Object;#define SIZE 5class Iterator//迭代器接口{public:virtual void First()=0;virtual void Next()=0;virtual bool IsDone()=0;virtual Object CurrentItem()=0;};class Aggregate//集合接口{public:virtual Iterator* CreateIterator()=0;virtual Object getItem(int index)=0;virtual int getSize()=0;};class ConcreteIterator :public Iterator//具体迭代器{public:ConcreteIterator(Aggregate*ag){_ag = ag;_current_index=0;}void First(){_current_index = 0;//让当前的游标回到初始位置}void Next(){if(_current_index <_ag->getSize())_current_index++;}bool IsDone(){return _current_index == _ag->getSize();}Object CurrentItem(){return _ag->getItem(_current_index);}private:int _current_index;Aggregate *_ag;};class ConcreteAggregate:public Aggregate //具体集合{public:ConcreteAggregate(){for(int i=0;i<SIZE;i++){object[i]=i+100;}}Iterator* CreateIterator()//让迭代器 持有一个具体集合的引用{return new ConcreteIterator(this);}Object getItem(int index){return object[index];}int getSize(){return SIZE;}private:Object object[SIZE];};int main(){Aggregate *ag = new ConcreteAggregate();Iterator *it = ag->CreateIterator();for(;!(it->IsDone());it->Next()){cout<<it->CurrentItem()<<endl;}delete it;delete ag; getchar(); return 0;}
0 0
- 设计模式(C#)之迭代器模式(Iterator Pattern)
- 设计模式(C#)之迭代器模式(Iterator Pattern)
- (C#)设计模式 之 单例模式
- 设计模式之命令模式(c++)
- 设计模式之状态模式(c++)
- 设计模式之工厂模式(c++)
- 设计模式之单例模式(C++)
- C语言设计模式之策略模式
- 设计模式之代理模式(C++)
- 设计模式之原型模式(C++)
- 设计模式之观察者模式(C++)
- C#--设计模式之单例模式
- C#--设计模式之简单工厂模式
- C#--设计模式之工厂方法模式
- C#--设计模式之建造者模式
- C#--设计模式之原型模式
- C#--设计模式之适配器模式
- C#--设计模式之桥接模式
- Mac下安装node.js和mongoDB
- NYOJ 15 括号匹配(二)(区间dp)
- ThinkPad 双显卡 NVidia + 集显 切换
- 恋襄城独留情迷乱
- iOS近场通信(wifi、蓝牙)
- c++设计模式之迭代器模式
- cookie、session总结
- jQuery-Ajax 使用
- Java实战及解析 — Maven快速入门
- Callable与Future的介绍
- 用链表手动实现C++栈操作(5种)
- python中安装各种库小结
- HTML5实现获取地理位置信息并定位功能
- iOS --NSURLConnection 请求总结