Exemplo 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();
    }
Exemplo 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 Run()
        {
            FreshSalad salad     = new FreshSalad("ruccola", "parmesan", "vinaigrette");
            Pasta      carbonara = new Pasta("penne", "cream");

            WriteLine($"preparing food");

            Avaliable saladAvaliable     = new Avaliable(salad, 3);
            Avaliable carbonaraAvaliable = new Avaliable(carbonara, 4);

            saladAvaliable.Orderitem("John");
            saladAvaliable.Orderitem("Sally");
            saladAvaliable.Orderitem("Luke");

            carbonaraAvaliable.Orderitem($"Sam");
            carbonaraAvaliable.Orderitem($"Greggory");
            carbonaraAvaliable.Orderitem($"Laura");
            carbonaraAvaliable.Orderitem($"Min");
            carbonaraAvaliable.Orderitem($"Rand");

            saladAvaliable.Display();
            carbonaraAvaliable.Display();
        }