一 概念
二 uml圖
三 c++**實現
lesson1.h
#ifndef lesson1_h
#define lesson1_h
#pragma once
#include #include #include #include using namespace std;
class concreteaggregate;
typedef string object;
//迭代抽象類,用於定義得到開始物件,得到下乙個物件,判斷是否到結尾
//當前物件等抽象方法,統一介面
class iterator
;//aggregate聚集抽象類
class aggregate
;//實現從前向後的迭代器
class concreteiterator : public iterator
;//實現從後向前的具體迭代器類
class concreteiteratordesc : public iterator
;//定義乙個具體的聚合類
class concreteaggregate : public aggregate
;#endif // lesson1_h
lesson1.cpp
#include "lesson1.h"
//初始化時將具體的聚合物件傳入
concreteiterator::concreteiterator(aggregate* aggregate)
object concreteiterator::first()
object concreteiterator::next()
}object concreteiterator::currentitem()
bool concreteiterator::isdone()
concreteaggregate::concreteaggregate()
concreteaggregate::~concreteaggregate()
iterator* concreteaggregate::createiterator()
iterator* concreteaggregate::createiteratordesc()
int concreteaggregate::getcount() const
vector* concreteaggregate::getvector()
object concreteaggregate::getelement(int index)
concreteiteratordesc::concreteiteratordesc(aggregate * aggregate)
object concreteiteratordesc::first()
object concreteiteratordesc::next()
}object concreteiteratordesc::currentitem()
bool concreteiteratordesc::isdone()
//
#include "pch.h"
#include #include "lesson1.h"
using namespace std;
int main()
cout << "\n從後向前的遍歷\n" << endl;
//產生從後向前的迭代器
iterator* it2 = bus->createiteratordesc();
while (!it2->isdone())
return 0;
}執行結果
參考資料
1 《大話設計模式c++實現-第20章-迭代器模式》
016 第20章 迭代器模式
簡述 迭代器模式 提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露該物件的內部表示。迭代器模式包括 抽象聚集類 具體聚集類 抽象迭代類 具體迭代類。抽象聚集類 封裝乙個抽象迭代類物件。具體聚集類 繼承自抽象聚集類。迭代器模式 1 include 2 include 3 using names...
《大話設計模式》讀書筆記 第20章 迭代器模式
1 迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。2 當需要訪問乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,就應該考慮用迭代器模式。另外,如果需要對聚集有多種方式遍歷是,也可以考慮用迭代器模式。3 迭代器模式 iterator 結構圖...
20 迭代器模式
迭代器模式 1 定義 提供一種方法訪問乙個容器物件中各個元素,而又不暴露該物件的內部細節。2 結構圖 1 iterator介面 public inte ce iterator 2 iterator實現類 public class tvchannel implements iterator priva...