足球戰術之Factory Method篇
時間:2024-10-20 來源: 作者: 我要糾錯
<p style=line-height: 150%>接上回:<p style=line-height: 150%><A >http://www.csdn***/Develop/read_article.asp?id=12040</A><p style=line-height: 150%>使用工廠方法有以下好處,
球員僅處理進球(product)接口,
但每要產生一種新的進球方式,
就必須讓這個隊員來學會這種方法,
或者換個隊員。球員基類在類中
創建進球,而不是直接創建,
為子類提供一個hook。提供平行
的類層次。
代碼如下:
class 球員{
public:
virtual 進球* 創建(進球類型);
};<p style=line-height: 150%>進球* 球員::創建(進球類型 id){
if (id==高空球) return new 頭球進球;
if (id==半高球) return new 抽射破門;
<A href="file://repeat">file://repeat</A> for remaining products...
return 0;
}<p style=line-height: 150%>進球* 射門機器::創建(進球類型 id){
if (id==高空球) return new 倒鉤;
if (id==半高球) return new 胸部或肩部擋進去;
if (id==低球) return new 魚躍沖頂;
return 球員::創建(id);//全部其他的失敗時調用
}
標簽: