设计模式之迭代器模式

来源:互联网 发布:俄罗斯套娃动作数据 编辑:程序博客网 时间:2024/05/24 01:00

      上篇我们讲了外观模式,这篇我们再来看看迭代器模式,这也是一种使用频率很高的模式。通常的数据存储聚合类中,既包括数据存储的功能又包括对这些数据遍历的功能,而要修改聚合类,既得修改数据存储又得修改遍历功能,非常繁琐,也不符合单一职责原则。迭代器模式的核心思想是将数据存储和数据遍历分开,让数据遍历的方法单独组成一个迭代器的类,基本架构:一个抽象聚合类(包括数据存储和抽象遍历类),一个具体聚合类(包括数据存储和具体遍历类),一个抽象遍历类,一个具体遍历类。这样当我们有新的产品需求如添加一个新的具体聚合类的时候,我们只需要添加一个具体遍历类和具体的聚合类,符合开闭原则。


以下是代码示例:

#pragma once#include <List>using namespace std;typedef list<int> LISTINT;  class baseIterator//抽象迭代器{public://抽象迭代器里的基本遍历方法void nextObject();void preObject();void  lastObject();void firstObject();};class basePact//抽象产品类{private :LISTINT mList;public ://数据存储基本方法basePact(LISTINT);void addObject(int);    void removeObject(int);LISTINT getList();    virtual baseIterator* createIterator()//抽象迭代器{return new baseIterator();}};class ProductPact: public basePact//具体产品类{public :baseIterator* createIterator(){return new realIterator();}//具体迭代器};class realIterator :public baseIterator//具体迭代器{private:ProductPact* m_product;public: };


0 0
原创粉丝点击