コード例 #1
0
ファイル: PizzaStore.cs プロジェクト: garyng/design-patterns
        public Pizza OrderPizza(string type)
        {
            Pizza pizza = CreatePizza(type);

            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            pizza.Box();

            return(pizza);
        }
コード例 #2
0
        /// <summary>
        /// The order pizza.
        /// </summary>
        /// <param name="pizzaType">
        /// The pizza type.
        /// </param>
        /// <returns>
        /// The <see cref="Pizza"/>.
        /// </returns>
        public Pizza OrderPizza(string pizzaType)
        {
            Pizza pizza = this.factory.CreatePizza(pizzaType);

            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            pizza.Box();

            return(pizza);
        }
コード例 #3
0
        public Pizza OrderPizza(PizzaType pizzaType)
        {
            Pizza pizza = CreatePizza(pizzaType);

            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            Pizza.Box();

            return(pizza);
        }
コード例 #4
0
ファイル: PizzaStore.cs プロジェクト: 1PaCHeK1/Patterns
        public Pizza Order(object pizzaEnum)
        {
            Pizza pizza = CreatePizza(pizzaEnum);

            pizza.Prepare();
            pizza.Bake();
            pizza.Slice();
            pizza.InBox();
            pizza.ToString();

            return(pizza);
        }
コード例 #5
0
        public Pizza OrderPizza(string type)
        {
            Pizza pizza = factory.CreatePizza(type);

            if (pizza != null)
            {
                pizza.Prepare();
                pizza.Bake();
                pizza.Cut();
                pizza.Box();
            }
            return(pizza);
        }
コード例 #6
0
        public Pizza OrderPizza(string type)
        {
            Pizza pizza = null;

            pizza = createPizza(type);
            Console.WriteLine("--- Making a " + pizza.Name + " ---");
            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            pizza.Box();

            return(pizza);
        }
コード例 #7
0
        public override IPizza MakePizza(string name)
        {
            var pizza = new Pizza();

            switch (name)
            {
            case "Pepperoni":
                pizza.Build(name, "tomato", "cheese, basil, pepperoni");
                pizza.Bake(350, 18);
                pizza.Slice(12);
                pizza.Box();
                break;

            default:
                pizza.Build(name, "tomato", "cheese, basil");
                pizza.Bake(350, 18);
                pizza.Slice(12);
                pizza.Box();
                break;
            }

            return(pizza);
        }
コード例 #8
0
ファイル: PizzaStore.cs プロジェクト: JvPost/DP
        public Pizza OrderPizza(string type)
        {
            Pizza pizza = CreatePizza(type);

            if (pizza == null)
            {
                throw new Exception("Unknown pizza ordered.");
            }

            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            pizza.Box();
            return(pizza);
        }
        public void TestNYStyleCheesePizza()
        {
            HeadFirstDesignPatterns.Factory.PizzaStore.PizzaStore nyStore =
                new NYPizzaStore();
            Pizza  pizza = nyStore.OrderPizza("cheese");
            string pizzaPrepareReturn = "Preparing NY Style Sauce and Cheese Pizza\n" +
                                        "Tossing Thin Crust Dough\n" +
                                        "Adding Martinara Sauce\n" +
                                        "Adding toppings:\n" +
                                        "\tGreated Reggiano Cheese\n";

            Assert.AreEqual(pizzaPrepareReturn, pizza.Prepare());
            Assert.AreEqual("Bake for 25 minutes at 350 \n", pizza.Bake());
            Assert.AreEqual("Cutting the pizza into diagonal slices \n", pizza.Cut());
            Assert.AreEqual("Place pizza in official PizzaStore box \n", pizza.Box());
            Assert.AreEqual("NY Style Sauce and Cheese Pizza", pizza.GetName());
        }
コード例 #10
0
        public void TestChicagoStyleCheesePizza()
        {
            HeadFirstDesignPatterns.AbstractFactory.PizzaStore.PizzaStore chicagoStore =
                new ChicagoPizzaStore();

            Pizza pizza = chicagoStore.OrderPizza("cheese");

            string pizzaPrepareReturn = "Preparing Chicago Style Cheese Pizza\n" +
                                        "Thick Crust Dough\n" +
                                        "Plum Tomato Sauce\n" +
                                        "Mozzerella Cheese";

            Assert.AreEqual(pizzaPrepareReturn, pizza.Prepare());
            Assert.AreEqual("Bake for 25 minutes at 350 \n", pizza.Bake());
            Assert.AreEqual("Cutting the pizza into diagonal slices \n", pizza.Cut());
            Assert.AreEqual("Place pizza in official PizzaStore box \n", pizza.Box());
            Assert.AreEqual("Chicago Style Cheese Pizza", pizza.Name);
        }
コード例 #11
0
        public void TestNYStyleCheesePizza()
        {
            HeadFirstDesignPatterns.AbstractFactory.PizzaStore.PizzaStore nyStore =
                new NYPizzaStore();

            Pizza pizza = nyStore.OrderPizza("cheese");

            string pizzaPrepareReturn = "Preparing New York Style Cheese Pizza\n" +
                                        "Thin Crust Dough\n" +
                                        "Marinara Sauce\n" +
                                        "Reggiano Cheese";

            Assert.AreEqual(pizzaPrepareReturn, pizza.Prepare());
            Assert.AreEqual("Bake for 25 minutes at 350 \n", pizza.Bake());
            Assert.AreEqual("Cutting the pizza into diagonal slices \n", pizza.Cut());
            Assert.AreEqual("Place pizza in official PizzaStore box \n", pizza.Box());
            Assert.AreEqual("New York Style Cheese Pizza", pizza.Name);
        }
        public void TestChicagoStyleCheesePizza()
        {
            HeadFirstDesignPatterns.Factory.PizzaStore.PizzaStore chicagoStore =
                new ChicagoPizzaStore();
            Pizza pizza = chicagoStore.OrderPizza("cheese");

            string pizzaPrepareReturn = "Preparing Chicago Style Deep Dish Cheese Pizza\n" +
                                        "Tossing Extra Thick Crust Dough\n" +
                                        "Adding Plum Tomato Sauce\n" +
                                        "Adding toppings:\n" +
                                        "\tShredded Mozzarella Cheese\n";

            Assert.AreEqual(pizzaPrepareReturn, pizza.Prepare());
            Assert.AreEqual("Bake for 25 minutes at 350 \n", pizza.Bake());
            Assert.AreEqual("Cutting the pizza into square slices \n", pizza.Cut());
            Assert.AreEqual("Place pizza in official PizzaStore box \n", pizza.Box());
            Assert.AreEqual("Chicago Style Deep Dish Cheese Pizza", pizza.GetName());
        }
コード例 #13
0
        public void BakeTest()
        {
            var pizza = new Pizza(new List <float> {
                1, 2, 3, 4, 5, 6, 7, 8
            });

            foreach (var slices in pizza.Slices)
            {
                Assert.IsFalse(slices.IsReady);
            }

            pizza.Bake(2);
            var expectedReady = new List <float>()
            {
                0, 0, 1, 2, 3, 4, 5, 6
            };

            this.ValidatePizza(pizza, expectedReady);
        }
コード例 #14
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Console.WriteLine("What Piza do you you want");

            string answer = Console.ReadLine();

            SimplePizzaFactory spf = new SimplePizzaFactory();

            Pizza pizza = spf.CreatePizza("Cheese");

            pizza.Prepare();
            pizza.Bake();
            pizza.Box();

            Zeeks zeeks = new Zeeks();

            zeeks.OrderPizza("Cheese");
        }
コード例 #15
0
        public void ConsumeSlicesTest_AllSuccess()
        {
            var pizza = new Pizza(new List <float> {
                1, 1, 1, 1, 1, 1, 1, 1
            });

            pizza.Bake(1);
            var result = pizza.ConsumeSlices(new HashSet <Pattern>()
            {
                Pattern.A, Pattern.B
            });

            Assert.AreEqual(result.Count, 2);
            var expectedTimeLeft = new List <float>()
            {
                1, 1, 0, 0, 0, 0, 0, 0
            };

            this.ValidatePizza(pizza, expectedTimeLeft);
        }
コード例 #16
0
        public void OrderPizza(string pizzaName)
        {
            /* The code commented below is tightly coupled and breaks the OCP */

            //if (pizzaName == "cheese")
            //{
            //    _pizaa = new CheesePizza();
            //}
            //if (pizzaName == "peppypaneer")
            //{
            //    _pizaa = new PeppypaneerPizza();
            //}
            //if (pizzaName == "farmhouse")
            //{
            //    _pizaa = new FarmhousePizza();
            //}

            Pizza pizza = _simplePizzaFactory.CreatePizza(pizzaName);

            pizza.Prepare();
            pizza.Bake();
            pizza.Cut();
            pizza.Box();
        }
コード例 #17
0
 public void Execute()
 {
     pizza.Bake();
 }
コード例 #18
0
        public void PizzaTest_EndToEnd()
        {
            // Make new pizza.
            var currentState = new List <float> {
                1, 1, 1, 1, 1, 1, 1, 2
            };
            var pizza = new Pizza(currentState);

            this.ValidatePizza(pizza, currentState);
            // Can't consume any slices
            var consumeResult = pizza.ConsumeSlices(new HashSet <Pattern>()
            {
                Pattern.A
            });

            Assert.AreEqual(consumeResult.Count, 0);

            // Bake the pizza
            pizza.Bake(1);
            currentState = new List <float>()
            {
                0, 0, 0, 0, 0, 0, 0, 1
            };
            this.ValidatePizza(pizza, currentState);
            // Can consume F,G, but not H
            consumeResult = pizza.ConsumeSlices(new HashSet <Pattern>()
            {
                Pattern.F, Pattern.G, Pattern.H
            });
            Assert.AreEqual(consumeResult.Count, 2);
            currentState = new List <float>()
            {
                0, 0, 0, 0, 0, 1, 1, 1
            };
            this.ValidatePizza(pizza, currentState);

            // Add some toppings
            pizza.ApplyTopping(Topping.Pepperoni);
            var toppingState = new List <int>()
            {
                1, 1, 1, 1, 1, 1, 1, 1
            };

            this.ValidatePizza(pizza, currentState, toppingState);
            // Consume the pizza
            consumeResult = pizza.ConsumeSlices(new HashSet <Pattern>()
            {
                Pattern.A, Pattern.B
            });
            Assert.AreEqual(consumeResult.Count, 2);
            currentState = new List <float>()
            {
                1, 1, 0, 0, 0, 1, 1, 1
            };
            toppingState = new List <int>()
            {
                0, 0, 1, 1, 1, 1, 1, 1
            };
            this.ValidatePizza(pizza, currentState, toppingState);
            this.ValidateSlices(consumeResult, Topping.Pepperoni);

            // Bake some more
            pizza.Bake(1);
            currentState = new List <float>()
            {
                0, 0, 0, 0, 0, 0, 0, 0
            };
            this.ValidatePizza(pizza, currentState, toppingState);
            // Consume A again. Should be plain
            consumeResult = pizza.ConsumeSlices(new HashSet <Pattern>()
            {
                Pattern.A
            });
            Assert.AreEqual(consumeResult.Count, 1);
            Assert.AreEqual(consumeResult[0].Toppings.Count, 0);
            // Consume H. Should have toppings (even though it's being baked when the topping was added)
            consumeResult = pizza.ConsumeSlices(new HashSet <Pattern>()
            {
                Pattern.H
            });
            currentState = new List <float>()
            {
                1, 0, 0, 0, 0, 0, 0, 2
            };
            toppingState = new List <int>()
            {
                0, 0, 1, 1, 1, 1, 1, 0
            };
            Assert.AreEqual(consumeResult.Count, 1);
            this.ValidatePizza(pizza, currentState, toppingState);
            this.ValidateSlices(consumeResult, Topping.Pepperoni);
        }