請教一個observer設計問題。
可是一到實踐,就出現了很多問題。具體是這樣的:
1、一個坦克大戰遊戲;
2、戰場上有M枚飛行中的導彈;
3、戰場上有N輛行進中的坦克;
如何處理下面兩種事件?
事件1:坦克被導彈擊中
事件2:導彈擊中了坦克
也就是說:一枚導彈擊中了坦克的同時,就有一輛坦克被這枚導彈擊中。
我的問題是,如何檢測這兩個事件的發生比較好呢?
1、坦克獲得每個導彈的位置,並檢測是否相撞,如果相撞則呼叫this.notifyTankAttacked()和hisMissile.notifyMissileHitTank();
2、導彈獲得每個坦克的位置,並檢測是否相撞,如果相撞則呼叫this.notifyMissileHitTank()和hisTank.notifyTankAttacked();
3、由其他執行緒獲得坦克和導彈的位置,迴圈每個坦克,再拿每個坦克的位置跟每個導彈的位置相比較,迴圈巢狀;當確認相撞後,呼叫tank.notifyTankAttacked()和
missile.notifyMissileHitTank();
4、有其他更好的辦法。。。
//////////////////////以下是部分程式碼/////////////////////
這裡有些不知所措,
我該如何定義事件?
這裡僅考慮了tankAttacked()這個事件,它有兩個參與者
1、發生該事件的坦克
2、擊中坦克的導彈
如果坦克還有其他事件,如:tankFire()坦克開炮/tankMove()坦克移動/tankDie()坦克死掉/...
那麼在這些事件中,第二個引數attackerMissile(擊中坦克的導彈)將沒有任何用處了。
同樣的問題也在MissileEvent中存在。
不知道這裡應該如何處理?
我在想,這個TankEvent事件可不可以看作是DTO?也就是粗粒度的,我可以把所有可能用到的屬性都加上,不用的屬性就傳遞成null即可了?
public class TankEvent{ private Tank tank; private Missile attackerMissile; //getter/setter //... } public class MissileEvent{ private Missile missile; private Tank tankAttacked; ////getter/setter //... } //坦克 public class Tank{ //... private List<TankEventListener> listeners; public void notifyTankAttacked(){ for(Iterator<TankEventListener> i = listeners.iterator();i.hasNext();){ i.next().tankAttacked(new TankEvent(...)); } } } //導彈 public class Missile{ //... private List<MissileEventListener> listeners; public void notifyMissileHitTank{ for(Iterator<MissileEventListener> i = listeners.iterator();i.hasNext();){ i.next().missileHitTank(new MissileEvent(...)); } } } public interface TankEventListener{ public void tankAttacked(TankEvent e); //... } public interface MissileEventListener{ public void missileHitTank(MissileEvent e); //... } <p class="indent"> |
[該貼被darasion於2008-12-21 19:03修改過]
[該貼被darasion於2008-12-21 20:11修改過]
相關文章
- 請教一個物件設計的問題物件
- 請教一個DAO設計模式的問題設計模式
- 請教高手一個系統設計的問題
- 請教一個JVM問題JVM
- 請教高手一個問題!
- 請教一個cookies的問題Cookie
- 請教一個executeBatch()的問題BAT
- 請教各位高手一個問題
- 請教個動態報表設計的問題
- 請教一個關於JAVA SOCKET程式設計中的問題Java程式設計
- 請教一個struct tag的問題Struct
- 請教一個演算法問題演算法
- 請教一個ADAPTER的問題APT
- 請教大家一個JAVA的問題Java
- 請教一個WEB START的問題!Web
- 誠心請教一個關於hibernate程式碼設計的問題
- banq 你好,請教Observer模式Server模式
- 請教一個go切片引用的問題Go
- 請教有關template設計模式的問題設計模式
- 請教一個多執行緒的問題執行緒
- 請教Banq一個Ruby架構的問題架構
- 請教各位大俠一個JavaBean的問題JavaBean
- 請教一個檔案上傳的問題
- 請教一個timeout的實現問題
- 後臺許可權設計問題,請教思路
- 請教banq大哥:資料庫設計的問題!!!資料庫
- 請教一個切片遞迴賦值的問題遞迴賦值
- 請教一個 python 包安裝的問題Python
- 請教banq老師一個repository的問題
- 請教一個關於執行緒的問題執行緒
- 初學,一個關於RMI的問題請教!!!
- 請教一個資料表關係的問題
- 【求助】請教一個初學java的小問題Java
- 請教一個jbuilder7中的中文問題UI
- 請教一個關於工廠模式的問題模式
- 一個資料庫連線問題!請教高手資料庫
- 請教大家一個財務軟體的問題
- 請教設計一個流程多變的模式模式