public static Carro MontarCarro(Tipo tipo) { CarroFactory cf = null; switch (tipo) { case Tipo.Popular: cf = new CarroPopularFactory(); break; case Tipo.Luxo: cf = new CarroLuxoFactory(); break; default: break; } var carro = new Carro { Roda = cf.MontarRoda(), Som = cf.MontarSom() }; return(carro); }
private static void AbstractFactory() { #region AbstractFactory List <Carro> carrosMontados = new List <Carro>(); CarroFactory carroFactory = null; TipoCarroEnum[] carros = new TipoCarroEnum[] { TipoCarroEnum.Popular, TipoCarroEnum.Luxo }; foreach (var tipoCarro in carros) { switch (tipoCarro) { case TipoCarroEnum.Popular: carroFactory = new CarroPopularFactory(); break; case TipoCarroEnum.Luxo: carroFactory = new CarroLuxoFactory(); break; default: throw new Exception($"TipoCarro: {tipoCarro} desconhecido!"); } carrosMontados.Add(new Carro(carroFactory.TipoCarro) { Roda = carroFactory.MontarRoda(), Som = carroFactory.MontarSom() }); } foreach (var carroMontado in carrosMontados) { GerenciadorSaida.SaidaConsole.EscreverTexto($"Carro: {carroMontado.TipoCarro} \t Roda: {carroMontado.Roda.ToString()} \t Som: {carroMontado.Som.ToString()}"); } #endregion AbstractFactory }