我正在开发简单棋盘游戏等通用游戏引擎。我定义了需要每个游戏实现的接口,我有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