Ejemplo n.º 1
0
        public static void Main()
        {
            var coffeeTypes = Enum.GetValues(typeof(CoffeeType));

            Console.WriteLine(PrintMessages.CoffeeTypes);

            foreach (var item in coffeeTypes)
            {
                int value = (int)item;

                Console.WriteLine($"{item} - {value}");
            }

            int coffeeNumber;

            while (true)
            {
                Console.Write(PrintMessages.EnterCoffeeNumber);
                bool isNum = int.TryParse(Console.ReadLine(), out coffeeNumber);

                if (isNum)
                {
                    if (coffeeNumber > coffeeTypes.Length || coffeeNumber < 1)
                    {
                        Console.WriteLine(PrintMessages.InvalidCoffeeNumber);
                        continue;
                    }
                    break;
                }
                else
                {
                    Console.WriteLine(PrintMessages.InvalidCoffeeNumber);
                    continue;
                }
            }

            CoffeeType coffeeType = (CoffeeType)coffeeNumber;

            Coffee coffee = CoffeeFactory.GetCoffee(coffeeType);

            coffee.Print();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var fileReader  = new LocalFileReader();
            var lineParser  = new LineParser();
            var coffeeMaker = new CoffeeFactory();

            try
            {
                var lines = fileReader.GetAllLines(FILE_PATH);

                var ingredients = lines.Select(line => lineParser.ParseLine(line)).ToArray();
                var recipe      = new Recipe(ingredients);

                var        coffee         = coffeeMaker.GetCoffee(recipe);
                Director   coffeeDirector = null;
                BaseCoffee madeCoffee     = null;

                switch (coffee)
                {
                case Coffee.Espresso:
                    var espressoBuilder = new EspressoBuilder();
                    coffeeDirector = new Director(espressoBuilder);
                    coffeeDirector.MakeCoffee();
                    madeCoffee = espressoBuilder.GetResult();
                    break;

                case Coffee.Cappuccino:
                    var cappucinoBuilder = new CappuccinoBuilder();
                    coffeeDirector = new Director(cappucinoBuilder);
                    coffeeDirector.MakeCoffee();
                    madeCoffee = cappucinoBuilder.GetResult();
                    break;

                case Coffee.Americano:
                    var americanoBuilder = new AmericanoBuilder();
                    coffeeDirector = new Director(americanoBuilder);
                    coffeeDirector.MakeCoffee();
                    madeCoffee = americanoBuilder.GetResult();
                    break;

                case Coffee.FlatWhite:
                    var flatWhiteBuilder = new FlatWhiteBuilder();
                    coffeeDirector = new Director(flatWhiteBuilder);
                    coffeeDirector.MakeCoffee();
                    madeCoffee = flatWhiteBuilder.GetResult();
                    break;

                default:
                    Console.WriteLine("Recipe not recognized");
                    Console.ReadLine();
                    return;
                }

                Console.WriteLine(madeCoffee.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.ReadLine();
        }