迭代器模式

2021-10-25 07:30:59 字數 1611 閱讀 3944

從表明理解就是乙個接乙個。就和排隊買東西一樣,對於商家而言,需要照顧到每乙個排隊的人,保證每個人都能買到東西,如果限量請提前說明(即總數需要明確),並且在購買的時候,商家只需要知道「你付錢了」,就需要把東西給你,不需要了解你姓名、**號碼等等其他的個人資訊,只需要保證你付錢了就像。而迭代器模式就是提供一種方法順序訪問乙個聚合物件(一條隊伍)中的所有元素,並且不用暴露物件的內部資訊(個人資訊)。

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...