迭代器模式(iterator)提供了一種順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。
因此,當你需要訪問乙個聚焦物件,而且不管這些物件是什麼都需要遍歷的時候,就應該選擇使用迭代器模式,為了遍歷不同的聚合結構提供了如開始,下乙個,是否結束,當前哪一項等統一的介面。
//迭代抽象類,用於定義得到開始物件、得到下乙個物件、判斷是否到結尾、當前物件等抽象方法,統一介面
class
iterator
;
virtual ~iterator() {};
virtual
string first() = 0
;
virtual
string next() = 0
;
virtual
string currentitem() = 0
;
virtual
bool isdone() = 0;};
//聚集抽象類
class
aggregate;//
具體迭代器類,繼承iterator 實現開始、下乙個、是否結尾、當前物件等方法
class concreteiterator : public
iterator
string
first()
string
next()
return
strret;
}string
currentitem()
bool
isdone()
private
: aggregate*m_aggregate;
intm_ncurrent;
};//
具體聚集類 繼承
class concreteaggregate : public
aggregate
~concreteaggregate()
}iterator*createiterator()
return
m_piterator;
}intcount()
void push(const
string&strvalue)
string pop(const
intnindex)
return
strret;
}private
: vector
m_vecitems;
iterator*m_piterator;
};int
main()
iterator* iter =null;
iter = pname->createiterator();
if (null !=iter)
}system(
"pause");
return0;
}
C 設計模式 迭代器模式
迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式結構圖 iterator迭代器抽象類 class iterator public virtual object first 0 virtual object next 0 virtual ...
C 設計模式 迭代器模式
迭代器模式 提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露其內部的結構 每一種資料結構 包括自定義 遍歷自身內部的資料方式都是不同的。但是我們又希望和常規的遍歷方式一樣呼叫,就如for和foreach一樣遍歷。想要以相同的方式遍歷不同型別的聚合物件,首先就要有乙個相同的介面方法來統一獲取,...
設計模式 C 迭代器模式
sejimoshi.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include include include using namespace std class student long getid intgetage void setname string name void...