コード例 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("1. Using builder...");
            HelperBuilder.Call();

            Console.WriteLine("2. Using fluent builder");
            HelperBuilderFluent.Call();

            Console.WriteLine("3. Using fluent builder with inheritance with recursive generics");
            var pizza = Pizza.New
                        .WithDough(DoughType.thick)
                        .WithSauce(SauceType.tomato)
                        .WithIngredient(IngredientsType.cheese)
                        .WithIngredient(IngredientsType.ham)
                        .Build();

            Console.WriteLine(pizza.ToString());

            Console.WriteLine("4. Using functional builder");
            var pizzaBuilderFunctional = new BuilderFunctional();
            var pizza2 = pizzaBuilderFunctional.WithDough(DoughType.thick)
                         .WithSauce(SauceType.garlic)
                         .WithIngredient(IngredientsType.cheese)
                         .WithIngredient(IngredientsType.mushrooms)
                         .Price(10.1m)
                         .Build();

            Console.WriteLine(pizza2.ToString());

            Console.WriteLine("5. Using faceted builder");
            var           pizzaBuilderFaceted = new PizzaBuilderFaceted();
            PizzaWithSize pizza3 = pizzaBuilderFaceted.Dough
                                   .Size(SizeType.big)
                                   .WithDough(DoughType.thick)
                                   .Composition
                                   .WithIngredient(IngredientsType.cheese)
                                   .WithIngredient(IngredientsType.ham)
                                   .WithSauce(SauceType.garlic);

            Console.WriteLine(pizza3.ToString());
        }
コード例 #2
0
 public static BuilderFunctional Price(this BuilderFunctional builder, decimal price)
 {
     builder.Actions.Add(pizza => pizza.Price = price);
     return(builder);
 }