足球戰術之observer及memento篇 (轉)
足球戰術中最重要的應該是隊員的跑動,而對於全體隊員的跑動應該符合observer才對。因為作為subject的傳球隊員不僅僅是要對被傳球的隊員傳送訊息,而且要改變所有隊員(observers)的跑動方式。廣播的方式應該分為兩種情況:推和拉。被傳球的隊員是接收推的方式,由傳球隊員的傳球路線直接引導他的跑動路線。其他隊員是接收拉的方式,由視覺接受傳球隊員的跑動及傳球路線繼而決定自己的跑動。程式碼如下:
class 無球隊員{
public:
virtual ~觀察();
virtual void 跑動(傳球隊員* 傳球路線)=0;
protected:
觀察();
};
class 傳球隊員{
public:
virtual ~傳球訊息();
virtual void 準備傳球(無球隊員*);
virtual void 繼續帶球(無球隊員*);
virtual void 傳球();
protected:
傳球訊息();
private:
List *_無球隊員;
};
void 傳球訊息::準備傳球(無球隊員* ){
_無球隊員->開始觀察(物件);
}
void 傳球訊息::繼續帶球(無球隊員* 物件){
_無球隊員->停止跑動;
}
void 傳球訊息::傳球(){
ListIterator i(_無球隊員);
for (i.First();i.IsDone();i.Next()){
i.CurrentItem()->傳球后跑動(this);
}
}
隊形的保持需要memento模式,特別是兩個邊後衛,上一場意甲AC米蘭輸給佩努賈,主要是因為邊後衛助攻後未回原位所致。這裡使用memento主要是象使用contra那樣讓邊後衛兼任邊前衛,但如果隊員能力不足,或防守任務過於艱鉅,以至於需要邊後衛反覆無效的來回奔跑則不應該使用此模式。這裡由教練事先演練的演算法,由一個虛擬的caretaker由進攻的需要向邊後衛(originator)發出請求,生成一個虛擬的memento,後衛前插助攻,防守時邊後衛因為caretaker的防守需要的請求,返回到memento的位置。
程式碼如下:
class 邊後衛{
public:
防守位置* 建立防守位置();
void 設定防守位置(const 防守位置*);
private:
位置* _位置;
};
class 防守位置{
public:
virtual ~防守位置();
pivate:
friend class 邊後衛;
防守位置();
void 設定位置(位置*);
位置* 得到位置();
private:
位置* _位置;
};
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990362/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 足球戰術之Builder篇 (轉)UI
- 足球戰術之adapter篇 (轉)APT
- 足球戰術->全攻全守之visitor篇 (轉)
- 足球戰術->單刀赴會之prototype篇 (轉)
- 足球戰術->組合進攻之composite篇 (轉)
- DirectShow之介面實戰篇(一) (轉)
- DirectShow之介面實戰篇(二) (轉)
- DirectShow之介面實戰篇(三) (轉)
- 足球黑科技之AI與足球智慧分析AI
- JBuilder9.0+Weblogic7.0實戰篇之Session Bean篇 (轉)UIWebSessionBean
- JBuilder9+Weblogic7實戰篇之工具篇(JDK) (轉)UIWebJDK
- observer pattern 之我見Server
- 騰訊 、 網易的足球遊戲大戰遊戲
- JBuilder9+Weblogic7實戰篇之工具篇(Weblogic) (轉)UIWeb
- JBuilder9+Weblogic7實戰篇之Filter運用篇 (轉)UIWebFilter
- JBuilder9+Weblogic7實戰篇之工具篇(JDBC 2) (轉)UIWebJDBC
- JBuilder9+Weblogic7實戰篇之工具篇(JDBC 1) (轉)UIWebJDBC
- 【GNU/Linux實戰手記之Emacs篇 上】 (轉)LinuxMac
- GNU/Linux實戰手記之基本操作篇 (轉)Linux
- .Net微服務實戰之技術架構分層篇微服務架構
- 淺談RASP技術攻防之實戰[環境配置篇]
- 懶載入之intersection observerServer
- 看了設計模式之Observer設計模式Server
- 解讀分散式防火牆之――技術篇(轉)分散式防火牆
- JBuilder9.0+Weblogic7.0實戰篇之JSP+SERVLET篇 (轉)UIWebJSServlet
- JBuilder9+Weblogic7實戰篇之JSP使用JDBC篇 (轉)UIWebJSJDBC
- 機器學習實戰之開篇機器學習
- 淺談RASP技術攻防之實戰[程式碼實現篇]
- 【GNU/Linux實戰手記之安裝配置篇】 (轉)Linux
- JBuilder9+Weblogic7實戰篇之Entity Bean運用篇(一) (轉)UIWebBean
- Observer Design Pattern in C#! (轉)ServerC#
- Java Q&A: 使用Observer模式 (轉)JavaServer模式
- Apache Spark技術實戰之5 -- SparkR的安裝及使用ApacheSpark
- Java 8 Stream之實戰篇Java
- Ant實戰篇 (一)(3) (轉)
- Ant實戰篇 (一)(4) (轉)
- Observer Pattern - An Enterprise JavaBean Implementation (轉)ServerJavaBean
- JAVA設計模式之 備忘錄模式【Memento Pattern】Java設計模式