足球戰術之Builder篇 (轉)

gugu99發表於2008-06-10
足球戰術之Builder篇 (轉)[@more@]

接上回:

/Develop/read_article.?id=11801">

使用builder,來多點進攻,
可以避免abstract factory的
進球方式已經定死的缺點,
因為builder生產的產品差異很大,
以至於無需定義一個抽象的父類,
再就是很多人會把builder和observer
弄混,以為subject就是director,
observer就是builder,其實builder
模式中的director是虛擬的,並
沒有該類,實際上只是在builder中
有統一的可以看作是director的介面。
用builder模式有以下幾個好處:
1.你可以任意改變進球的方式和過程,
只用新生成一個builder(打某種戰術的一個隊員)。
2.將進球的過程和其他組織過程分開。
3.可以對進球過程進行更精細的控制。
4.builder的抽象父類並不將生成方法
宣告成純虛擬,而是定義成空方法,
可以讓教練(client)只定義其需要的方法。
程式碼如下:
class 射門機器{
public:
  virtual void 頭球射門(){}
  virtual void 腳射門(){}
  virtual void 其他射門(){}


  virtual 進球* 得到進球(){return 0;}
protected:
  射門機器();
};


class 隊員:public 射門機器{
public:
  隊員();


  virtual void 頭球射門();
  virtual void 腳射門();
  virtual void 其他射門();


  virtual 進球* 得到進球();


private:
  /*...自己的特性和進攻方式*/
};


 


 


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

相關文章