足球戰(zhàn)術(shù)->組合進(jìn)攻之composite篇
時(shí)間:2024-10-20 來(lái)源: 作者: 我要糾錯(cuò)
<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%>最有效的進(jìn)攻方法是幾個(gè)球員組合成composite來(lái)進(jìn)攻,
這個(gè)composite又可以和其他球員和composite組合成
新的composite,如此遞歸...Composite模式簡(jiǎn)化了
教練(client)的指揮,因?yàn)樗挥每紤]某個(gè)進(jìn)攻模塊
是單個(gè)隊(duì)員還是composite,而且也容易在原戰(zhàn)術(shù)上
加入新增加的隊(duì)員或composite,但是使用起來(lái)會(huì)出現(xiàn)
你不希望某個(gè)進(jìn)攻組合中有某個(gè)隊(duì)員或組合時(shí),你無(wú)法
限制他們,只有在比賽進(jìn)行中靈活運(yùn)用。
代碼如下:
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 隊(duì)員:public 組件{
};<p style=line-height: 150%>組合* a組合=new 組合;
隊(duì)員* a隊(duì)員=new 隊(duì)員;<p style=line-height: 150%>組件* a組件;
組合* test;<p style=line-height: 150%>a組件=a組合;
if(test=a組件->得到組合()){
test->添加(new 隊(duì)員);
}<p style=line-height: 150%>a組件=a隊(duì)員;<p style=line-height: 150%>if(test=a組件->得到組合()){
test->添加(new 隊(duì)員);
}<p style=line-height: 150%>注:組件為一個(gè)組合或隊(duì)員。<p style=line-height: 150%>
標(biāo)簽: