足球戰術->全攻全守之visitor篇 (轉)

worldblog發表於2007-12-09
足球戰術->全攻全守之visitor篇 (轉)[@more@]

接上回:

/develop/article/11/11283.shtm">http://www.csdn.net/develop/article/11/11283.shtm

採用全攻全守的打法,使用visitor,
每個隊員是一個visitor,每個位置是一個
node,好處是每加一個新的隊員,就增加
一種新的進攻或防守方法,每個隊員集中
了他的優點和相關的打法,分離了其他打法
到其他隊員身上。但是位置已經定死,增加
新位置比較困難。透過全場的位置結構和隊
員特性(類層次)進行訪問。當某個隊員跑到
某個位置時,他的操作會作為累積狀態影響
其他隊員的操作。由於全攻全守要求每個位置
的隊員的能力都很強,所以往往會造成主力前鋒
必須要有當中後衛能力之類的混亂局面,也就是
node要給visitor提供訪問其內部狀態的公共操作,
破壞了封裝性:)
程式碼如下:
class 隊員{
public:
  virtual void 訪問前鋒位置(前鋒位置*);
  virtual void 訪問後衛位置(後衛位置*);
  //...訪問其它位置的方法
protected:
  隊員();
};

class 位置{
public:
  virtual ~位置();
  virtual void 接受(隊員&)=0;
protected:
  位置();
};


 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990267/,如需轉載,請註明出處,否則將追究法律責任。

相關文章