迭代器模式(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...