设计模式--迭代器模式
迭代器模式:属于行为型模式基本原理:顺序访问一组对象,不需要知道对象的底层。主要流程:1.创建迭代器类,用来连接对象和判断是否有下一个对象。2.使用时得到该迭代器类型,并顺序使用该迭代器注意:迭代器的类型要保持一致。可以参考c++语言中的容器迭代器是如何实现的。#include <iostream>#include <string>using namespace std;/
·
迭代器模式:属于行为型模式
基本原理:顺序访问一组对象,不需要知道对象的底层。
主要流程:
1.创建迭代器类,用来连接对象和判断是否有下一个对象。
2.使用时得到该迭代器类型,并顺序使用该迭代器
注意:迭代器的类型要保持一致。可以参考c++语言中的容器迭代器是如何实现的。
#include <iostream>
#include <string>
using namespace std;
//创建一个迭代器
class Iterator
{
public:
virtual bool hasNext() = 0;
virtual string next() = 0;
};
//得到迭代器
class Container
{
public:
Iterator *getIterator();
};
//集体实现迭代器
class NameIterator : public Iterator
{
public:
string names[10] = {"aaa","bbb","ccc","ddd"};
int index = 0;
bool hasNext()//是否有下一个对象
{
if(this->index <= this->names->length())
{
return true;
}
return false;
}
string next()//得到下一个对象
{
if(this->hasNext())
{
return names[this->index++];
}
return NULL;
}
};
//具体实现得到迭代器
class NameRepository : public Container
{
public:
Iterator *getIterator()
{
return new NameIterator();
}
};
int main()
{
//使用迭代器
NameRepository *nameRepository = new NameRepository();
for(Iterator *iter = nameRepository->getIterator(); iter->hasNext();)
{
string name = iter->next();
cout<<"name = "<<name<<endl;
}
return 0;
}
更多推荐
已为社区贡献1条内容
所有评论(0)