提供一種方法順序訪問乙個聚合物件中各個元素, 而又無須暴露該物件的內部表示。可以使用不同的方式來遍歷整個整合物件。
iterator:抽象迭代,定義訪問和遍歷元素的介面,一般都是固定介面:first,next,isdone/last
concreteiterator:具體迭代器,實現迭代器介面,完成容器元素的遍歷
container:抽象容器,負責提供具體迭代器角色的介面,必然提供乙個createiterator的方法。
concretecontainer:具體容器,實現介面定義的方法,建立出容納迭代器的物件
#include #include using namespace std;
typedef int object;
#define size 5
// 自定義抽象迭代器
class myiterator ;
// 抽象容器
class aggregate ;
// 迭代器實現
class concreteiterator : public myiterator
virtual void first()
virtual void next()
}virtual bool isdone()
virtual object currentitem()
private:
int m_current_index;
aggregate* m_ag;
};class concreteaggregate : public aggregate
}myiterator* createiterator()
object getitem(int index)
int getsize()
private:
object m_object[size];
};int main()
cin.get();
return 0;
}
(二十三)直譯器模式
定義 直譯器模式 interpreter 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。interpreter.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace st...
直譯器模式(二十三)
直譯器模式 interpreter pattern 是一種按照規定語法進行解析的方案,例如解析四則運算 sql語句等,現在專案中使用較少,其定義如下 給定一門語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。1.abstractexpression 抽象直譯器 具...
設計模式 二十三 模板方法模式
template method pattern 模板方法模式 template method pattern 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模板方法模式是一種基於繼承的 復用技術,它是一種類行為型...