Из 5 классов наследников сделать один класс наследник абстрактного создателя на C#
В предметной области нет классов, которые могли бы выполнить роль создателей авто (FamalyCar, SportCar, Truck и т.д.).Есть 5 классов наследников от абстрактного класса Car. Нужно эти 5 классов удалить и вместо них создать один класс наследник абстрактного создателя с одним фабричным методом с параметром и с конструкцией swith case.. Не могу сообразить, как это можно реализовать. Если есть идеи, подскажите пожалуйста!
{
abstract class Car
{
public int Price { get; set; } //get получить значение //set установить значение
public string Name { get; set; }
public abstract void Typecar();
public abstract void Cost();
}
class FamilyCar : Car
{
public FamilyCar()
{
Price = 100;
Name = "Семейный автомобиль";
}
public override void Typecar()
{
Console.WriteLine(Name);
}
public override void Cost()
{
Console.WriteLine($"{Price}$ час");
}
}
class SportCar : Car
{
public SportCar()
{
Price = 250;
Name = "Спортивный автомобиль";
}
public override void Typecar()
{
Console.WriteLine(Name);
}
public override void Cost()
{
Console.WriteLine($"{Price}$ час");
}
}
class Truck : Car
{
public Truck()
{
Price = 150;
Name = "Грузовой автомобиль";
}
public override void Typecar()
{
Console.WriteLine(Name);
}
public override void Cost()
{
Console.WriteLine($"{Price}$ час");
}
}
class Cabriolet : Car
{
public Cabriolet()
{
Price = 200;
Name = "Кабриолет";
}
public override void Typecar()
{
Console.WriteLine(Name);
}
public override void Cost()
{
Console.WriteLine($"{Price}$ час");
}
}
class SUV : Car
{
public SUV()
{
Price = 200;
Name = "Внедорожник";
}
public override void Typecar()
{
Console.WriteLine(Name);
}
public override void Cost()
{
Console.WriteLine($"{Price}$ час");
}
}
abstract class Creator
{
public abstract Car FactoryMethod();
}
class FamilyCarCreator : Creator
{
public override Car FactoryMethod()
{
return new FamilyCar();
}
}
class SportCarCreator : Creator
{
public override Car FactoryMethod()
{
return new SportCar();
}
}
class TruckCreator : Creator
{
public override Car FactoryMethod()
{
return new Truck();
}
}
class CabrioletCreator : Creator
{
public override Car FactoryMethod()
{
return new Cabriolet();
}
}
class SUVCreator : Creator
{
public override Car FactoryMethod()
{
return new SUV();
}
}
class Program
{
static void Main(string[] args)
{
var creators = new Creator[]
{
new FamilyCarCreator(),
new SportCarCreator(),
new TruckCreator(),
new CabrioletCreator(),
new SUVCreator()
};
for(int i=0;i<2;i++)
{
Console.WriteLine("Выбери свой автомобиль:");
foreach (var creator in creators)
{
Console.WriteLine("");
var vehicle = creator.FactoryMethod();
vehicle.Typecar();
vehicle.Cost();
}
var userChoice = Console.ReadLine();
Console.WriteLine("Сколько часов:");
var hours = int.Parse(Console.ReadLine());
foreach (var creator in creators)
{
var vehicle = creator.FactoryMethod();
//if (userChoice == vehicle.Name)
//{
Console.WriteLine($"Это будет стоить вам {hours * vehicle.Price} за {hours} час");
//}
}
}
}
}
}