Скажем, у меня есть класс, подобный этому, для расчета стоимости путешествий на разных расстояниях с различными видами транспорта:
public class TransportationCostCalculator
{
public double DistanceToDestination { get; set; }
public decimal CostOfTravel(string transportMethod)
{
switch (transportMethod)
{
case "Bicycle":
return (decimal)(DistanceToDestination * 1);
case "Bus":
return (decimal)(DistanceToDestination * 2);
case "Car":
return (decimal)(DistanceToDestination * 3);
default:
throw new ArgumentOutOfRangeException();
}
}
Это хорошо и все, но случаи переключения могут быть кошмаром для обслуживания мудрым, и что, если я хочу использовать самолет или поезд позже? Затем мне нужно изменить класс выше. Какую альтернативу корпусу коммутатора я мог бы использовать здесь и какие-либо намеки на то, как?
Я предполагаю использовать его в консольном приложении вроде этого, которое будет запускаться из командной строки с аргументами для какого транспортного средства вы хотите использовать, и расстояния, которое вы хотите путешествовать:
class Program
{
static void Main(string[] args)
{
if(args.Length < 2)
{
Console.WriteLine("Not enough arguments to run this program");
Console.ReadLine();
}
else
{
var transportMethod = args[0];
var distance = args[1];
var calculator = new TransportCostCalculator { DistanceToDestination = double.Parse(distance) };
var result = calculator.CostOfTravel(transportMethod);
Console.WriteLine(result);
Console.ReadLine();
}
}
}
Любые советы были высоко оценены!