從表明理解就是乙個接乙個。就和排隊買東西一樣,對於商家而言,需要照顧到每乙個排隊的人,保證每個人都能買到東西,如果限量請提前說明(即總數需要明確),並且在購買的時候,商家只需要知道「你付錢了」,就需要把東西給你,不需要了解你姓名、**號碼等等其他的個人資訊,只需要保證你付錢了就像。而迭代器模式就是提供一種方法順序訪問乙個聚合物件(一條隊伍)中的所有元素,並且不用暴露物件的內部資訊(個人資訊)。
iterator:迭代器抽象類,儲存的是共同的方法
concreteiterator:具體的迭代器抽象類,一般需要儲存列表資料和共同方法的具體實現
aggregate:聚集抽象類,儲存的是聚集物件類的共同資料和方法
場景:
優點:
缺點:
實操
在寫**的時候,如果不能一步到位的把全部需要用到的方法進行定義,可以採用引導式,比如先寫迭代器抽象的方法,當你具體方法的時候,就知道需要在聚集了中新增獲取元素、獲取大小的方法,而在寫main使用的時候,就會知道需要新增add函式,給據聚集類新增資料
思維:
先規定遍歷方式方法,寫出iiierator,定出需要實現提供的遍歷方式
完成cconcreteiterator,去實現需要實現的方法
完成iaggregate,在之前的引導下,可以定下來大體需要那些介面去支援迭代器的功能,然後有需要提供元素的設定介面,因此add式需要新增的
完成具體類的編寫,只是實現抽象類中定義的方法
// iteratormodel.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//#include #include #include using namespace std;
#define inte***ce struct
inte***ce iiterator
;inte***ce iaggregate
;class cconcreteiterator :public iiterator
string getfirst()
string getnext()
else if (m_currentindex == m_aggregate->getcount())
return "到底了";
}bool isend()
bool isempty()
string currentitem()
};class cconcreteaggregate :public iaggregate
string getobject(int index)
void addobject(string str)
int getcount()
};int main()
}
迭代器模式
迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而不是暴露該物件的內部表示。乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮用迭代器模式。你需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一...
迭代器模式
我最早接觸的設計模式就是迭代器模式了哈 為什麼要有迭代器模式呢?看下下面的 就知道了哈 對於乙個陣列物件sz 我們要怎麼遍歷呢?public void bianlisz class geweishu public myiterator getiterator private class geweis...
迭代器模式
迭代器模式 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件多的內部表示。1 iterator抽象類 public abstract class iterator 2 aggregate聚集抽象類 public abstract class aggregate 3 concreteite...