橫傳轉(zhuǎn)移之chain of resposibility篇
時間:2024-10-20 來源: 作者: 我要糾錯
<p style=line-height: 150%>接上回:<p style=line-height: 150%><A >http://www.csdn***/develop/read_article.asp?id=11180</A><p style=line-height: 150%>橫傳搗腳轉(zhuǎn)移是找出進攻突破口的最好的方法,中國隊
這次十強賽最大的進步就是這方面。這比較符合
chain of resposibility模式。整個前鋒,前衛(wèi),和
后衛(wèi)線形成一條鏈,對每個隊員解耦,把進攻請求
按一個一個隊員(對象)傳過去,直到機會出現(xiàn),
合適的隊員完成進攻。好處是隊員不用知道機會
什么時候出現(xiàn),只要從對方隊員密集處(無法完成
進攻)向?qū)Ψ疥爢T稀疏處(易于完成進攻)轉(zhuǎn)移。
可隨機改變打發(fā),利于靈活處理進攻任務(wù)。缺點是
可能搗了半天也沒得到進攻機會,反被對方斷球,
被打反擊。代碼如下:
class 隊員{
public:
隊員(隊員* s):_后繼(s){}
virtual void 處理球();
private:
隊員* _后繼;
};<p style=line-height: 150%>void 隊員::處理球(){
if(_后繼){
_后繼->處理球();
}
}<p style=line-height: 150%>void 隊員::處理進攻請求(請求* the請求){
switch(the請求->得到類型()){
case 射門:
處理射門((射門請求*)the請求);
break;
case 突破:
處理突破((突破請求*)the請求);
break;
default:
break;
}
}<p style=line-height: 150%>class 具體隊員:public 隊員{
public:
virtual void 處理請求(請求* the請求);
};<p style=line-height: 150%>void 具體隊員::處理請求(請求* the請求){
switch(the請求->得到類型()){
case 突破分球:
<A href="file://處">file://處</A>理突破分球
break;
default:
<A href="file://處">file://處</A>理其它請求
隊員::處理請求(the請求);
}
}
標(biāo)簽: