コード例 #1
0
        public Pizza OrderPizza(string type)
        {
            Pizza pizza;

            //  - - - - - - THIS IS WHAT VARIES.
            switch (type)
            {
            case "cheese":
                pizza = new CheesePizza();
                break;

            case "pepperoni":
                pizza = new PepperoniPizza();
                break;

            // Note: This code is not close for modification.
            // If the pizza offering changes, we have to modify this code.
            default:
                Console.WriteLine("Invalid pizza type!");
                return(null);
            }
            //  - - - - - - - - - - - - - - - - - -

            // THIS IS WHAT WE EXPECT TO STAY THE SAME.
            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            pizza.Box();

            return(pizza);
        }