足球战术之iterator篇

    技术2022-05-11  139

    接上回:

    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 _当前;};


    最新回复(0)