예제 #1
0
        public IDrink CreateDrink(string drinkName, IEnumerable <string> options)
        {
            IDrink drink = GetDrink(drinkName);

            if (drinkName == "Special")
            {
                options = ((SpecialCoffeeAdapter)drink).GetOptions(_specialCoffee).ToList();
            }

            if (drinkName == "Tea")
            {
                ((TeaAdapter)drink).SetTeaBlend(_teaBlend);
            }

            List <string> configurations = options.ToList();

            for (int i = 0; i < configurations.Count; i++)
            {
                switch (configurations[i])
                {
                case "Sugar":
                    drink = new SugarDrinkDecorator(drink, _sugarAmount);
                    break;

                case "Milk":
                    drink = new MilkDrinkDecorator(drink, _milkAmount);
                    break;

                case "Whippedcream":
                    drink = new WhippedcreamDrinkDecorator(drink);
                    break;

                case "Coffee":
                    drink = new CoffeeDrinkDecorator(drink, _drinkStrength);
                    break;

                case "Whiskey":
                    drink = new WiskeyDrinkDecorator(drink);
                    break;

                case "Cointreau":
                    drink = new CointreauDrinkDecorator(drink);
                    break;

                case "Amaretto":
                    drink = new AmarettoDrinkDecorator(drink);
                    break;

                case "Cognac":
                    drink = new CognacDrinkDecorator(drink);
                    break;

                default:
                    drink = new MissingIngrediëntDrinkDecorator(drink);
                    break;
                }
            }

            return(drink);
        }
        public IDrink CreateDrink(string name, Strength strength, Amount sugarAmount, Amount milkAmount, bool hasSugar, bool hasMilk, string blendname, string special)
        {
            IDrink drink = new Drink(name, strength);

            if (hasSugar)
            {
                drink = new SugarDecorator(drink, sugarAmount);
            }

            if (hasMilk)
            {
                drink = new MilkDecorator(drink, milkAmount);
            }

            switch (drink.Name)
            {
            case CAFEAULAIT:
                drink = new CafeAuLaitDecorator(drink);
                break;

            case CAPPUCCINO:
                drink = new CappuccinoDecorator(drink);
                break;

            case COFFEE:
                drink = new CoffeeDrinkDecorator(drink);
                break;

            case ESPRESSO:
                drink = new EspressoDecorator(drink);
                break;

            case WIENERMELANGE:
                drink = new WienerMelangeDecorator(drink);
                break;

            case CHOCOLATE:
                drink = new HotChocolateDecorator(drink, false);
                break;

            case DELUXE:
                drink = new HotChocolateDecorator(drink, true);
                break;

            case TEA:
                drink = new TeaDecorator(drink, blendname);
                break;

            case SPECIAL:
                drink = new SpecialCoffeeDecorator(drink, special);
                break;
            }


            return(drink);
        }
예제 #3
0
        public IDrink CreateDrink(string option, bool hasSugar, bool hasMilk, Amount sugarAmount, Amount milkAmount, Strength drinkStrength, string blendName = "")
        {
            IDrink newDrink = new Drink(hasSugar, hasMilk, sugarAmount, milkAmount, drinkStrength);

            switch (option)
            {
            case "Coffee":
                newDrink = new CoffeeDrinkDecorator(newDrink);
                break;

            case "Café au Lait":
                newDrink = new CafeAuLaitDrinkDecorator(newDrink);
                break;

            case "Capuccino":
                newDrink = new CappuccinoDrinkDecorator(newDrink);
                break;

            case "Espresso":
                newDrink = new EspressoDrinkDecorator(newDrink);
                break;

            case "Wiener Melange":
                newDrink = new WienerMelangeDrinkDecorator(newDrink);
                break;

            case "Chocolate":
                newDrink = new ChocolateDrinkDecorator(newDrink, false);
                break;

            case "Chocolate Deluxe":
                newDrink = new ChocolateDrinkDecorator(newDrink, true);
                break;

            case "Tea":
                newDrink = new TeaDrinkDecorator(newDrink, blendName);
                break;

            default:
                break;
            }
            return(newDrink);
        }