迭代器模式
迭代器模式UML
迭代器有时又称光标,可在容器对象(container,例如链表或数组)上遍访的接口,设计人员无需关心容器对象的内存分配的实现细节。
#pragma once
#include <iostream>
#include <vector>
#include <string>
#include <Windows.h>
using namespace std;
class disable_iterator
{
public:
virtual int Current() = 0;
virtual void Next() = 0;
virtual bool isEmpty() = 0;
};
class Container
{
public:
vector<int> array;
public:
virtual disable_iterator* createIterator() = 0;
};
class real_disable_iterator : public disable_iterator
{
private:
Container* contain;
int count;
public:
real_disable_iterator(Container* con):contain(con),count(0){}
virtual int Current()
{
return contain->array[count];
}
virtual void Next()
{
count++;
return;
}
virtual bool isEmpty()
{
return count == contain->array.size();
}
};
class myContainer : public Container
{
public:
void push_back(int n)
{
array.push_back(n);
}
virtual disable_iterator* createIterator()
{
return new real_disable_iterator(this);
}
};
int main()
{
myContainer con;
con.push_back(1);
con.push_back(5);
con.push_back(9);
disable_iterator* myIter = con.createIterator();
while(!myIter->isEmpty())
{
cout << myIter->Current() << endl;
myIter->Next();
}
system("pause");
return 1;
}
我们上述的迭代器和STL迭代器相差甚远,但是迭代器的主要思想是相同的,都是将被迭代的对象交给我们的迭代器进行管理,客户端只需通过迭代器接口就可以进行操作,无需了解被迭代对象的内部数据结构,迭代器相当于一层防护衣,对被管理的对象进行了封装。
|