C# - Substituindo instruções if/else/switch
Hoje vamos mostrar como substituir instruções condicionais como if/else/switch em seu código usando polimorfismo. |
Vejamos uma estrutura de código muito comum onde temos uma série de instruções swith/case (poderia ser um if/else)
No trecho de código abaixo (C# 9.0) temos uma estrutura swtich/case padrão para validar a informação do usuário:
using System; Console.WriteLine("Informe a sua lingagem preferida : JavaScript, C#, Java, Python "); string linguagem = Console.ReadLine(); Console.ReadKey(); |
Para eliminar o uso da estrutura switch/case vamos criar um Factory chamado MethodFactory usando um objeto Dictionary onde no construtor vamos incluir as linguagens e retornar um valor:
using System;
using System.Collections.Generic;
Console.WriteLine("Informe a sua lingagem preferida: JavaScript, C#, Java, Python ");
string linguagem = Console.ReadLine();
Console.WriteLine(MethodFactory.Create(linguagem.ToLower()));
Console.ReadKey();
public class MethodFactory
{
private static Dictionary<string, string> linguagem = new Dictionary<string, string>();
static MethodFactory()
{
linguagem.Add("javascript", "válida");
linguagem.Add("c#", "válida");
linguagem.Add("java", "válida");
linguagem.Add("python", "válida");
}
public static string Create(string escolha)
{
return linguagem[escolha];
}
}
|
Embora não seja única forma de evitar o uso de instruções condicionais o Factory Method resolve o problema de criar objetos sem especificar as classes concretas definindo um método que é usado para criar objetos ao invés de fazer uma chamada direta ao construtor usando o operador new.
Pegue o projeto aqui : CShp_SemIfs.zip
E estamos conversados...
"E muitos dos que
dormem no pó da terra ressuscitarão, uns para vida eterna, e outros para
vergonha e desprezo eterno."
Daniel 12:2
Referências:
C# - Obtendo a data e a hora por TimeZone
C# - O Struct Guid - Macoratti.net
C# - Checando Null de uma forma mais elegante e concisa
DateTime - Macoratti.net
Null o que é isso ? - Macoratti.net
Formatação de data e hora para uma cultura ...
C# - Calculando a diferença entre duas datas
NET - Padrão de Projeto - Null Object Pattern
C# - Fundamentos : Definindo DateTime como Null ...
C# - Os tipos Nullable (Tipos Anuláveis) -