第20章迭代器模式

2022-03-11 19:17:38 字數 2008 閱讀 4477

一 概念

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