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

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐