public Engine() { this.army = new List <ISoldier>(); this.commandoFactory = new CommandoFactory(); this.engineerFactory = new EngineerFactory(); this.lieutenantGeneralFactory = new LieutenantGeneralFactory(); this.missionFactory = new MissionFactory(); this.privateFactory = new PrivateFactory(); this.repairFactory = new RepairFactory(); this.spyFactory = new SpyFactory(); }
private static void Execute(string command) { var arr = command.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); var type = arr[0]; Soldier currentSoldier; arr = arr.Skip(1).ToArray(); switch (type) { case "Private": currentSoldier = PrivateFactory.CreatePrivate(arr); break; case "LieutenantGeneral": currentSoldier = LieutenantGeneralFactory.CreateLieutenantGeneral(arr, soldiers); break; case "Engineer": try { currentSoldier = EngineerFactory.CreateEmgeneer(arr); } catch (ArgumentException) { return; } break; case "Commando": currentSoldier = CommandoFactory.CreateCommando(arr); break; case "Spy": currentSoldier = SpyFactory.CreateSpy(arr); break; default: throw new ArgumentException(); } soldiers.Add(currentSoldier); }