足球戰術之iterator篇

接上回:

http://www.csdn.net/develop/read_article.asp?id=11677

使用iterator模式,讓每個隊員做
iterator,每個位置做aggregate,
有如下幾個好處:
1.每個位置支持不同的隊員用不同方式遍歷。
2.簡化了每個位置的接口,使其kiss,不用具有遍歷的接口。
3.在同一個位置支持多個隊員同時遍歷。
代碼如下:
template <class Item>
class 位置{
public:
     位置(long size=缺省_位置_容量);
     long 計數() const;
     Item& Get(long index) const;
     //...
};

template <class Item>
class 隊員{
public:
     virtual void 回到初始位置()=0;
     virtual void 下一個位置()=0;
     virtual bool 是否到達() const=0;
     virtual Item 當前Item() const=0;
protected:
     隊員();
};

template <class Item>
class 左後衛:public 隊員<Item>{
public:
     左後衛(const 位置<Item>* 一個位置);
     virtual void 回到初始位置;
     virtual void 下一個位置();
     virtual bool 是否到達() const;
     virtual Item 當前Item() const;
private:
     const 位置<Item>* _位置;
     long _當前;
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章