我写了一个简单的游戏(基于回合,如Tic Tac Toe
)。架构非常简单,我有Game
类,它是聚合根,它有List
个玩家和Board
个对象。 Board
有Field
个对象 - 典型的聚合模式(我认为......)。
现在,这款游戏的类型可能很少:单人游戏,两个玩家(在单个设备上),通过蓝牙,通过wifi或在线(与陌生人)。我有两种方法来创建Game
对象。像这样,在构造函数中传递类型:
public Game(GameType type)
{
this.Type = type;
Players = new List<Player>();
...
}
添加新玩家/玩家时肯定存在差异。单人游戏的情况不同,两个玩家不同,网络游戏不同。因此,在这种方法中,类型必须switch/case
。
或,第二种方式:
创建派生类,例如SinglePlayerGame : Game
等...使用工厂方法GameAPI
创建类CreateGame
类。
所以,就在这一点上,我意识到我不知道何时使用第一种方式(通过构造函数然后使用switch/case
)以及何时使用工厂方法类..
提前感谢您澄清这一点!