//Abstract Factory //Vai criar uma Factory que sabe tratar os dados especificos com base em uma propriedade //No caso o ID da fila public static ITratamento CriarClasseTratamentoWebhook(DadosRetronadosWebhook dados) { Console.WriteLine(" AbstractFactory :: Selecionando a Factory de Tratamento com base na Fila"); switch (dados.Dados.Fila) { case 1: Console.WriteLine(" AbstractFactory :: Selecionado a Factory Bereau"); return(new TratamentoRetornoBereauFactory(dados)); case 2: Console.WriteLine(" AbstractFactory :: Selecionado a Factory SPA"); return(new TratamentoRetornoSPAFactory(dados)); default: throw new ArgumentException("Tratamento não reconhecido"); } }
static void Main(string[] args) { Console.WriteLine("Client :: Instanciando Objeto do Bereau"); DadosRetronadosWebhook retornoBereau = new DadosRetronadosWebhook() { Identification = new object(), Dados = new DadosRetorno() { Fila = 1, Retorno = "Bereau é dificil de escrever, mas vim pelo webhook" } }; Console.WriteLine("Client :: Obtendo a Factory que sabe converter o dados Retorno em Bereau"); ITratamento _classeTratamentoBereau = TratamentoFactory.CriarClasseTratamentoWebhook(retornoBereau); Console.WriteLine("Client :: Tratando os dados do Bereau"); _classeTratamentoBereau.TratarDadosRetorno(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Client :: Instanciando Objeto do SPA"); DadosRetronadosWebhook retornoSPA = new DadosRetronadosWebhook() { Identification = new object(), Dados = new DadosRetorno() { Fila = 2, Retorno = "Dados de Entrada vindos do webhook para o SPA" } }; Console.WriteLine("Client :: Obtendo a Factory que sabe converter o dados Retorno em SPA"); ITratamento _classeTratamentoSPA = TratamentoFactory.CriarClasseTratamentoWebhook(retornoSPA); Console.WriteLine("Client :: Tratando os dados do SPA"); _classeTratamentoSPA.TratarDadosRetorno(); Console.ReadLine(); }
public TratamentoRetornoSPAFactory(DadosRetronadosWebhook dados) { _dadosRetornadosWebhook = dados; Console.WriteLine(" Factory SPA :: Criada Classe"); }