Esempio n. 1
0
    static void Main(string[] args)
    {
        //Step 1: Define some dishes, and how many of each we can make
        FreshSalad caesarSalad = new FreshSalad("Crisp romaine lettuce", "Freshly-grated Parmesan cheese", "House-made Caesar dressing");

        caesarSalad.Display();

        Pasta fettuccineAlfredo = new Pasta("Fresh-made daily pasta", "Creamly garlic alfredo sauce");

        fettuccineAlfredo.Display();

        Console.WriteLine("\nMaking these dishes available.");

        //Step 2: Decorate the dishes; now if we attempt to order them once we're out of ingredients, we can notify the customer
        Available caesarAvailable  = new Available(caesarSalad, 3);
        Available alfredoAvailable = new Available(fettuccineAlfredo, 4);

        //Step 3: Order a bunch of dishes
        caesarAvailable.OrderItem("John");
        caesarAvailable.OrderItem("Sally");
        caesarAvailable.OrderItem("Manush");

        alfredoAvailable.OrderItem("Sally");
        alfredoAvailable.OrderItem("Francis");
        alfredoAvailable.OrderItem("Venkat");
        alfredoAvailable.OrderItem("Diana");
        alfredoAvailable.OrderItem("Dennis"); //There won't be enough for this order.

        caesarAvailable.Display();
        alfredoAvailable.Display();

        Console.ReadKey();
    }
Esempio n. 2
0
        static void Main(string[] args)
        {
            // печатаем меню на сегодня :))

            Pasta fettuccineAlfredo = new Pasta("Fresh-made daily pasta", "Creamly garlic alfredo sauce");

            fettuccineAlfredo.Display();

            FreshSalad caesarSalad = new FreshSalad("Crisp romaine lettuce", "Freshly-grated Parmesan cheese", "House-made Caesar dressing");

            caesarSalad.Display();

            FreshSalad greenSalad = new FreshSalad("greens", "cheese", "dressing");

            // тепреь нам нужно декорировать эти блюда, сделать обёртки для этих классов, таким образом,
            // что бы можно было отслеживать сколько блюд можно еще заказать.

            // для этого создадим базовый класс для всех декораторов (оберток) class Decorator, Decorator.cs
            // а далее создадим на его основе уже конкретный декоратор с (необходимой) добавленной функциональностью. class Available, Available.cs

            // Теперь мы создаем блюда с кол-вом возможных заказов на сегодня.
            Available caesarAvailable     = new Available(caesarSalad, 3);
            Available alfredoAvailable    = new Available(fettuccineAlfredo, 4);
            Available greenSaladAvailable = new Available(greenSalad);

            // caesarAvailable и caesarSalad это все потомки класса RestaurantDish и имеют общий интерфейс.

            // Ну а теперь принимаем заказы -
            caesarAvailable.OrderItem("John");
            caesarAvailable.OrderItem("Sally");
            caesarAvailable.OrderItem("Manush");

            alfredoAvailable.OrderItem("Sally");
            alfredoAvailable.OrderItem("Francis");
            alfredoAvailable.OrderItem("Venkat");
            alfredoAvailable.OrderItem("Diana");
            alfredoAvailable.OrderItem("Dennis"); // Not enough ingredients for Dennis's order!

            greenSaladAvailable.OrderItem("John");

            // и посмотрим сколько раз заказали блюда. Статистика.
            caesarAvailable.Display();
            alfredoAvailable.Display();

            greenSaladAvailable.Display();

            // заказ Dennis не выполнился, т.к. не достаточно ингредиентов.
        }
        public void PizzaTest()
        {
            var whitePizzas = new Available(new WhitePizza(), 3);
            var meatPizzas  = new Available(new MeatPizza(), 5);

            whitePizzas.OrderPizza("Luna");
            whitePizzas.OrderPizza("Mimi");
            whitePizzas.OrderPizza("Foma");
            whitePizzas.OrderPizza("Barley");

            meatPizzas.OrderPizza("Barley");
            meatPizzas.OrderPizza("Tonya");
            meatPizzas.OrderPizza("Anthony");
            meatPizzas.OrderPizza("Lindsay");
            meatPizzas.OrderPizza("Cameron");
            meatPizzas.OrderPizza("Linden");

            var whitePizzaOrders = whitePizzas.Display();
            var meatPizzaOrders  = meatPizzas.Display();

            var expectedWhitePizzaOrders = new[] {
                "Luna ordered white pizza",
                "Mimi ordered white pizza",
                "Foma ordered white pizza",
                "Barley was unable to order white pizza"
            };

            var expectedMeatPizzaOrders = new[] {
                "Barley ordered meat pizza",
                "Tonya ordered meat pizza",
                "Anthony ordered meat pizza",
                "Lindsay ordered meat pizza",
                "Cameron ordered meat pizza",
                "Linden was unable to order meat pizza"
            };

            whitePizzaOrders.Should().ContainAll(expectedWhitePizzaOrders);
            meatPizzaOrders.Should().ContainAll(expectedMeatPizzaOrders);
        }