public Tank(Factory factoryType, TypeOfArmor armorType, TypeOfGun gunType, TypeOfEngine engineType) { name = factoryType.SetName(); gun = factoryType.CreateGun(gunType); SetComponent(gun); engine = factoryType.CreateEngine(engineType); SetComponent(engine); armor = factoryType.CreateArmor(armorType); SetComponent(armor); factory = factoryType; typeOfArmor = armorType; typeOfGun = gunType; typeOfEngine = engineType; }
public override Armor CreateArmor(TypeOfArmor type) { switch (type) { case TypeOfArmor.Dynamic: { return(new DynamicArmor()); } case TypeOfArmor.Composite: { return(new CompositeArmor()); } default: { return(new CompositeArmor()); } } }
/// <summary> /// Создать броню /// </summary> /// <param name="type"></param> /// <returns></returns> public abstract Armor CreateArmor(TypeOfArmor type);
public static Tank CreateFromFile(string path) { var info = File.ReadAllLines(path); TypeOfArmor armorType = TypeOfArmor.Composite; TypeOfEngine engineType = TypeOfEngine.Gasturbine; TypeOfGun gunType = TypeOfGun.Tank; Factory factoryType = new RussianFactory(); try { switch (info[0]) { case "Russian": { factoryType = new RussianFactory(); break; } case "American": { factoryType = new AmericanFactory(); break; } } switch (info[1]) { case "Artillery": { gunType = TypeOfGun.Artillery; break; } case "Tank": { gunType = TypeOfGun.Tank; break; } } switch (info[2]) { case "Dynamic": { armorType = TypeOfArmor.Dynamic; break; } case "Composite": { armorType = TypeOfArmor.Composite; break; } } switch (info[3]) { case "Diesel": { engineType = TypeOfEngine.Diesel; break; } case "Gasturbine": { engineType = TypeOfEngine.Gasturbine; break; } } } catch (FormatException) { throw new FileFormatException("Входной файл имел неверный формат"); } return(new Tank(factoryType, armorType, gunType, engineType)); }