足球戰(zhàn)術(shù)之iterator篇
時間:2024-10-20 來源: 作者: 我要糾錯
<p style=line-height: 150%>接上回:<p style=line-height: 150%><A >http://www.csdn***/develop/read_article.asp?id=11677</A><p style=line-height: 150%>使用iterator模式,讓每個隊員做
iterator,每個位置做aggregate,
有如下幾個好處:
1.每個位置支持不同的隊員用不同方式遍歷。
2.簡化了每個位置的接口,使其kiss,不用具有遍歷的接口。
3.在同一個位置支持多個隊員同時遍歷。
代碼如下:
template <class Item>
class 位置{
public:
位置(long size=缺省_位置_容量);
long 計數(shù)() const;
Item& Get(long index) const;
//...
};<p style=line-height: 150%>template <class Item>
class 隊員{
public:
virtual void 回到初始位置()=0;
virtual void 下一個位置()=0;
virtual bool 是否到達() const=0;
virtual Item 當前Item() const=0;
protected:
隊員();
};<p style=line-height: 150%>template <class Item>
class 左后衛(wèi):public 隊員<Item>{
public:
左后衛(wèi)(const 位置<Item>* 一個位置);
virtual void 回到初始位置;
virtual void 下一個位置();
virtual bool 是否到達() const;
virtual Item 當前Item() const;
private:
const 位置<Item>* _位置;
long _當前;
};
標簽: