我正在開發簡單棋盤遊戲等通用遊戲引擎。我定義了需要每個遊戲實現的接口,我有IGame,IGameState,IBoardEvaluator和IMove等類。如何分組泛型類?
我有像IGame.PerformMove(IMove移動),我想限制的方法。如果我玩井字遊戲,我想強制我只能使用具體的類TTTGame,TTTState,TTTMove等......
我可以想到幾種方法來做到這一點,但沒有一個聽起來有趣。也許所有的類都可以有一個通用參數,我可以確保它匹配。
so IGame<T> has method PerformMove(IMove<T> move)
如果這樣做,我不知道用什麼類T也許沒關係。
我的另一個想法是在IGame上放上一堆泛型參數並給它所需的所有類。所以我會創建class TTTGame<TTTMove,TTTState,TTTMove....>
這也不是很好。是否有共同的模式來做到這一點?
也許你正試圖想太多前期。你應該嘗試從一個簡單的遊戲實現開始,然後重構你的代碼使其更加通用。 – Costo 2009-12-16 05:54:49