示例#1
0
        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);
        }
示例#2
0
        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
        }