迭代器模式(iterator):提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。
迭代器模式結構圖:
iterator迭代器抽象類:
class iterator
public:
virtual object& first()=0;
virtual object& next()=0;
virtual bool isdone()=0;
virtual object& currentitem()=0;
//用於定義得到開始物件,得到下乙個物件、判斷是否到結尾、當前物件等抽象方法,統一介面
aggregate聚集抽象類:
class aggregate
public:
virtual iterator* createiterator()=0; //建立迭代器
concreteiterator具體迭代器類,繼承iterator
class concreteiterator :public iterator
private:
concreteaggregate * aggregate;
list::iteratorit;
public:
concreteiterator(concreteaggregate * aggregate)
this->aggregate = aggregate;
it=aggregate->begin();
object& first()
return *it;
object& next()
object ret = null;
if((++it)!=aggregate->end())
ret = *it;
return ret;
bool isdone()
if((++it)!=aggregate->end())
return false;
else
return true;
object& currentitem()
return *it;
concreteaggregate具體聚集類,繼承aggregate
class concreteaggregate :public aggregate
private:
list*items = new list();
public:
iterator* createiterator()
return new concreteiterator(concreteaggregate *paggregate=this);
void setobject(object obj)
items->push_back(obj);
客戶端**:
void main()
concreteaggregate *pa = newconcreteaggregate();
pa->setobject(「元素1」);
pa->setobject(「元素2」);
pa->setobject(「元素3」);
pa->setobject(「元素4」);
iterator * it = pa->createiteraor(pa);
cout
while(!it->isdone())
coutnext();
C 設計模式 迭代器模式
迭代器模式 提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露其內部的結構 每一種資料結構 包括自定義 遍歷自身內部的資料方式都是不同的。但是我們又希望和常規的遍歷方式一樣呼叫,就如for和foreach一樣遍歷。想要以相同的方式遍歷不同型別的聚合物件,首先就要有乙個相同的介面方法來統一獲取,...
設計模式 C 迭代器模式
sejimoshi.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include include include using namespace std class student long getid intgetage void setname string name void...
C 設計模式 迭代器模式
迭代器模式 iterator 提供了一種順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。因此,當你需要訪問乙個聚焦物件,而且不管這些物件是什麼都需要遍歷的時候,就應該選擇使用迭代器模式,為了遍歷不同的聚合結構提供了如開始,下乙個,是否結束,當前哪一項等統一的介面。迭代抽象類,用於定義得到...