Chapter20 迭代器模式

2022-08-13 04:39:20 字數 2555 閱讀 6584

迭代器模式(iterator),提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露改物件的內部表示

當你需要訪問乙個聚集物件,而且不管這些物件是什麼,並且要遍歷這個物件的時候,你就應該考慮用迭代器模式。

迭代器模式為遍歷不同的聚集結構提供了如開始、下乙個、是否結束、當前哪一項等統一的介面。

迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可以讓外部**透明地訪問集合內部的資料。

由於牽扯到類的迴圈引用,所以這次宣告放在了hpp中,實現放在了cpp檔案中。

//

iterator抽象類

#ifndef _iterator_hpp

#define _iterator_hpp

class

iterator;

#endif

//

aggregate抽象類

#ifndef _aggregate_hpp

#define _aggregate_hpp#include

"iterator.hpp

"class

aggregate;

#endif

//

concreteaggregate類

#ifndef _concreteaggregate_hpp

#define _concreteaggregate_hpp#include

#include

#include

"iterator.hpp

"#include

"aggregate.hpp

"#include

"concreteiterator.hpp

"using

namespace

std;

class concreteaggregate : public

aggregate;

#endif

//

concreteaggregate類內函式的實現 cpp檔案

#include

"concreteaggregate.hpp

"#include

#include

#include

"concreteiterator.hpp

"using

namespace

std;

concreteaggregate::concreteaggregate()

iterator*concreteaggregate::createiterator();

void concreteaggregate::add(int

a)int

concreteaggregate::getsize()

int concreteaggregate::getnumn(int

n)

return

vec[n];

}

//

concreteiterator類

#ifndef _concreteiterator_hpp

#define _concreteiterator_hpp#include

"iterator.hpp

"class

concreteaggregate;

class concreteiterator : public

iterator;

#endif

//

concreteiterator類內函式的定義 cpp檔案

#include

"concreteaggregate.hpp

"concreteiterator::concreteiterator(concreteaggregate*cona)

:concreteagg(cona),currentn(0)

intconcreteiterator::first()

intconcreteiterator::next()

bool

concreteiterator::isdone()

intconcreteiterator::currentitem()

//

客戶端**

#include#include

"concreteaggregate.hpp

"#include

"concreteiterator.hpp

"#include

"concreteaggregate.cpp

"#include

"concreteiterator.cpp

"using

namespace

std;

;int

main()

執行結果:

UNP卷一chapter20 廣播

型別ipv4 ipv6 tcpudp 所標識介面數 遞送到介面數單播y yyy乙個 乙個任播 y 尚沒有y 一組一組中的乙個 多播可選yy 一組一組中的全體廣播y y全體全體表中要點 i 多播支援在ipv4中是可選的,在ipv6中卻是必需的 ii ipv6不支援廣播。使用廣播的任何ipv4應用程式一...

20 迭代器模式

迭代器模式 1 定義 提供一種方法訪問乙個容器物件中各個元素,而又不暴露該物件的內部細節。2 結構圖 1 iterator介面 public inte ce iterator 2 iterator實現類 public class tvchannel implements iterator priva...

第20章迭代器模式

一 概念 二 uml圖 三 c 實現 lesson1.h ifndef lesson1 h define lesson1 h pragma once include include include include using namespace std class concreteaggregate...