美文网首页设计模式C++实现笔记
ITERRATOR 迭代器模式(行为模式)

ITERRATOR 迭代器模式(行为模式)

作者: lixin_karl | 来源:发表于2019-03-15 14:31 被阅读0次

介绍

提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。

参与者

  • Iterator //迭代器
  • ConcreteIterator //具体迭代器
  • Aggregate //聚合
  • ConcreteAggregate //具体聚合

实现代码

class Container; //聚合
class Iterator {//迭代器
public:
    virtual bool hasNext() = 0;
    virtual int Next() = 0;
};
class Container{
public:
    Iterator *getIterator();

    int size()
    {
        return  vec.size();
    }
    int item(int index)
    {
        return vec[index];
    }
    void append(int item)
    {
        vec.push_back(item);
    }
public:
    std::vector<int> vec;
};
class InnerIterator : public  Iterator{ //具体迭代器
public:
    explicit InnerIterator(Container *container1)
    {
        container = container1;
        index = 0;
    }
    bool hasNext() override
    {
        return index < container->size();
    }
    int Next() override 
    {
        return container->item(index++);
    }
private:
    int index = 0;
    Container *container;
};

Iterator* Container::getIterator()
{
    return new InnerIterator(this);
}

int main()
{
    Container container;
    container.append(1);container.append(2);container.append(3);
    container.append(4);container.append(9);
    auto iterator = container.getIterator();
    while(iterator->hasNext())
    {
        std::cout<<iterator->Next()<<std::endl;
    }
    return 0;
}

输出结果

1
2
3
4
9

特点

  • 支持以不同的方式遍历同一个聚合
  • 迭代器简化了聚合的接口
  • 同一个聚合上可以有多个遍历

参考

  • 《设计模式:可复用面向对象软件设计的基础》

相关文章

网友评论

    本文标题:ITERRATOR 迭代器模式(行为模式)

    本文链接:https://www.haomeiwen.com/subject/jkgiuqtx.html