足球戰術->組合進攻之composite篇
時間:2024-10-20 來源: 作者: 我要糾錯
<p style=line-height: 150%>接上回:<p style=line-height: 150%><A >http://www.csdn***/develop/read_article.asp?id=11120</A><p style=line-height: 150%>最有效的進攻方法是幾個球員組合成composite來進攻,
這個composite又可以和其他球員和composite組合成
新的composite,如此遞歸...Composite模式簡化了
教練(client)的指揮,因為他不用考慮某個進攻模塊
是單個隊員還是composite,而且也容易在原戰術上
加入新增加的隊員或composite,但是使用起來會出現
你不希望某個進攻組合中有某個隊員或組合時,你無法
限制他們,只有在比賽進行中靈活運用。
代碼如下:
class 組合;<p style=line-height: 150%>class 組件{
public:
virtual 組合* 得到組合(){return 0;}
};<p style=line-height: 150%>class 組合:public 組件{
public:
void 添加(組件*);
virtual 組合* 得到組合(){return this;}
};<p style=line-height: 150%>class 隊員:public 組件{
};<p style=line-height: 150%>組合* a組合=new 組合;
隊員* a隊員=new 隊員;<p style=line-height: 150%>組件* a組件;
組合* test;<p style=line-height: 150%>a組件=a組合;
if(test=a組件->得到組合()){
test->添加(new 隊員);
}<p style=line-height: 150%>a組件=a隊員;<p style=line-height: 150%>if(test=a組件->得到組合()){
test->添加(new 隊員);
}<p style=line-height: 150%>注:組件為一個組合或隊員。<p style=line-height: 150%>
標簽: