迭代器模式:属于行为型模式
基本原理:顺序访问一组对象,不需要知道对象的底层。
主要流程:
            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;
}

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐