No exemplo a classe Orcamento tem o mesmo valor para todos os impostos. E se minha classe de negócio fosse outra ao invés de Orçamento com o conteúdo variando de acordo com cada classe que implementa a interface?
Exemplo:
public class ResultadoExame
{
public string Resultado { get; }
public ResultadoExame(string resultado)
{
Resultado = resultado;
}
}
public interface IExame
{
void Visualizar(ResultadoExame resultadoExame);
}
public class Holter : IExame
{
public void Visualizar(ResultadoExame resultadoExame)
{
Console.WriteLine("Resultado Holter: " + resultadoExame.Resultado);
}
}
public class Mapa : IExame
{
public void Visualizar(ResultadoExame resultadoExame)
{
Console.WriteLine("Resultado MAPA: " + resultadoExame.Resultado);
}
}
public voic VisualizadorDeResultados
{
public void VisualizarResultado(ResultadoExame resultadoExame, IExame exame)
{
exame.Visualizar(resultadoExame);
}
}
public class Program
{
public static void Main(string[] args)
{
VisualizadorDeResultados visualizador = new VisualizadorDeResultados();
IExame holter = new Holter();
IExame mapa = new Mapa();
// UM VALOR PARA O RESULTADO DO EXAME HOLTER
ResultadoExame resultadoHolter = new ResultadoExame("Exame normal");
visualizadorDeResultados.VisualizarResultado(resultadoHolter, holter);
// OUTRO VALOR PARA O RESULTADO DO EXAME MAPA
ResultadoExame resultadoMapa = new ResultadoExame("Exame deve ser repetido");
visualizadorDeResultados.VisualizarResultado(resultadoMapa, mapa);
}
}
A dúvida é se para valores diferentes para a classe de negócio ResultadoExame, o pattern Strategy ainda pode ser usado.