声明:本博文篇幅短,适合review。
一、概念
提供一种方法访问一个容器对象中的各个元素,而又不暴露该对象的内部细节。
二、模式结构图
三、例子
template<class Item>
class Iterator
{
public:
virtual void first()=0;
virtual void next()=0;
virtual Item* currentItem()=0;
virtual bool isDone()=0;
virtual ~Iterator(){}
};
template<class Item>
class ConcreteIterator : public Iterator <Item>
{
private:
ConcreteAggregate<Item> * aggr;
int cur;
public:
ConcreteIterator(ConcreteAggregate<Item>* a):aggr(a),cur(0){}
void first()
{
cur = 0;
}
void next()
{
if(cur < aggr->getSize())
cur++;
}
Item currentItem()
{
if(cur < aggr->getSize())
return (*aggr)[cur];
else
return NULL;
}