Exemple #1
0
        public void TestMain()
        {
            //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();
        }
Exemple #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 не выполнился, т.к. не достаточно ингредиентов.
        }
Exemple #3
0
        private static void Main()
        {
            var salad = new Salad {
                Greens   = "Lettuce",
                Cheese   = "Parmesan",
                Dressing = "Caesar"
            };

            salad.Display();
            var pasta = new Pasta {
                PastaType = "Daily Pasta",
                Sauce     = "Alfredo"
            };

            pasta.Display();

            var saladAvailable =
                new Available {
                RestaurantDish = salad, NumberOfDishesAvailable = 3
            };
            var pastaAvailable =
                new Available {
                RestaurantDish = pasta, NumberOfDishesAvailable = 4
            };

            saladAvailable.OrderItem("Mike");
            saladAvailable.OrderItem("John");
            saladAvailable.OrderItem("Chris");

            pastaAvailable.OrderItem("Mariana");
            pastaAvailable.OrderItem("Jake");
            pastaAvailable.OrderItem("Constantin");
            pastaAvailable.OrderItem("Gabriela");
            pastaAvailable.OrderItem("Gunther");

            saladAvailable.DisplayDishAndWhoOrderedIt();
            pastaAvailable.DisplayDishAndWhoOrderedIt();
        }