public interface IFrete
{
double Calcular(Pedido pedido);
}
public class Pedido
{
public double Valor { get; private set; }
public Pedido(double valor)
{
Valor = valor;
}
}
public class CalculadorDeFrete
{
public double GetCalculoDoFrete(Pedido pedido,IFrete frete)
{
double resultado = frete.Calcular(pedido);
return resultado;
}
}
public class FreteExpresso : IFrete
{
public double Calcular(Pedido pedido)
{
return pedido.Valor * 0.30;
}
}
public class FretePadrao : IFrete
{
public double Calcular(Pedido pedido)
{
return pedido.Valor * 0.1;
}
}
class Program
{
static void Main(string[] args)
{
CalculadorDeFrete calculadorDeFrete = new CalculadorDeFrete();
IFrete FreteExpress = new FreteExpresso();
IFrete FretePadrao = new FretePadrao();
Pedido pedido = new Pedido(1000);
double valorFrete = calculadorDeFrete.GetCalculoDoFrete(pedido, FretePadrao);
Console.WriteLine();
Console.WriteLine("Valor do frete: " + valorFrete);
Console.ReadKey();
}
}