static void Main(string[] args)
        {
            // 1. Create an instance for Builder and initialize with Concrete builder - ChesePizzaBuilder.
            PizzaBuilder chesePizzaBuilder = new ChesePizzaBuilder();

            // 2. Create an instance for Director.
            Cook cook = new Cook();

            // 3. By using Director instance, call the concrete object methods.
            cook.SetPizzaBuilder(chesePizzaBuilder);
            cook.ConstructPizza();

            // 4. Create and get the product, by using the Director.
            Pizza chesePizzaProduct = cook.GetPizza();

            // 5. Deliver the product.
            Console.WriteLine("Chese Pizza prepared by using " + chesePizzaProduct.Topping + " and " + chesePizzaProduct.Sauce);

            // 1. Create an instance for Builder and initialize with Concrete builder - SpicyPizzaBuilder.
            PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();

            // 2. Use same Director instance.
            // 3. And pass the new concrete Builder instance.
            cook.SetPizzaBuilder(spicyPizzaBuilder);
            cook.ConstructPizza();

            // 4. Create and get the product, by using the Director.
            Pizza spicyPizzaProduct = cook.GetPizza();

            // 5. Deliver the product.
            Console.WriteLine("Spicy Pizza prepared by using " + spicyPizzaProduct.Topping + " and " + spicyPizzaProduct.Sauce);

            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            // 1. Create an instance for Builder and initialize with Concrete builder - ChesePizzaBuilder.
            PizzaBuilder chesePizzaBuilder = new ChesePizzaBuilder();

            // 2. Create an instance for Director.
            Cook cook = new Cook();
                        
            // 3. By using Director instance, call the concrete object methods.
            cook.SetPizzaBuilder(chesePizzaBuilder);
            cook.ConstructPizza();
            
            // 4. Create and get the product, by using the Director.
            Pizza chesePizzaProduct = cook.GetPizza();

            // 5. Deliver the product.
            Console.WriteLine("Chese Pizza prepared by using " + chesePizzaProduct.Topping + " and " + chesePizzaProduct.Sauce);

            // 1. Create an instance for Builder and initialize with Concrete builder - SpicyPizzaBuilder.
            PizzaBuilder spicyPizzaBuilder = new SpicyPizzaBuilder();

            // 2. Use same Director instance.
            // 3. And pass the new concrete Builder instance.
            cook.SetPizzaBuilder(spicyPizzaBuilder);
            cook.ConstructPizza();

            // 4. Create and get the product, by using the Director.
            Pizza spicyPizzaProduct = cook.GetPizza();

            // 5. Deliver the product.
            Console.WriteLine("Spicy Pizza prepared by using " + spicyPizzaProduct.Topping + " and " + spicyPizzaProduct.Sauce);

            Console.ReadLine();
        }