足球戰術之Builder篇

接上回:

http://www.csdn.net/Develop/read_article.asp?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:
     /*...自己的特性和進攻方式*/
};


 


 

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