I've written a simple game (turn based, like Tic Tac Toe). Architecture is very simple, I have Game class which is aggregate root, it has List of players and Board object. Board has Field object - typical aggregate pattern (I think..).
Now, there could be few types of this game: Single Player, Two players (on single device), via Bluetooth, via wifi or online (with a stranger). I have two ways to create Game object. Like this, passing type in constructor:
public Game(GameType type)
{
this.Type = type;
Players = new List<Player>();
...
}
There will be for sure differences while adding new player/players. Different situation for single player, different for two players, different for online game. So in such method there must be switch/case on type.
OR, second way:
Create derived classes, like SinglePlayerGame : Game etc... Create class like GameAPI with factory method CreateGame.
So, being in that point, I realized I don't know when to use first way (via constructor and then having switch/case) and when use factory method inside additional class..
Thanks in advance for clarifying that!
Aucun commentaire:
Enregistrer un commentaire