コード例 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("选择工厂模式");
            var type = Console.ReadLine();

            switch (type)
            {
            case "1":    //工厂模式
                var   sharpFactory = new SharpeFactory();
                Sharp sharp        = sharpFactory.GetSharpe("R");
                sharp.Draw();
                Console.ReadLine();
                break;

            case "2":    //抽象工厂模式
                AbstractFactory abstractFactory = FactoryProducer.GetFactory("1212");
                IColor          color           = abstractFactory.GetColor("B");
                color.Fill();
                Console.ReadLine();
                break;

            case "3":    //建造者模式
                MealBuilder mealBuilder = new MealBuilder();
                Meal        vgMeal      = mealBuilder.PrepareVegMeal();
                Console.WriteLine("Veg meal");
                vgMeal.ShowItems();
                Console.WriteLine($"Total Cost:{vgMeal.GetCost()}");
                Meal nonVegMeal = mealBuilder.PrepareNonVegMeal();
                Console.WriteLine("NonVeg Meal");
                nonVegMeal.ShowItems();
                Console.WriteLine($"Total Cost:{nonVegMeal.GetCost()}");
                break;
            }
        }
コード例 #2
0
        public void Build()
        {
            using (var context = new DinnerManagerContext("DinnerManager"))
            {
                // clear database
                foreach (var m in context.Meals)
                {
                    context.Meals.Remove(m);
                }
                foreach (var d in context.Dishes)
                {
                    context.Dishes.Remove(d);
                }

                var spaghetti = new DishBuilder().WithDescription("Annick's befaamde spaghetti")
                                                 .WithName("Spaghetti bolognaise")
                                                 .WithRating(5)
                                                 .Build();
                context.Dishes.Add(spaghetti);

                var visVidee = new DishBuilder().WithName("Vis videe")
                                                .Build();
                context.Dishes.Add(visVidee);

                var vispannetje = new DishBuilder().WithName("Vispannetje")
                                                   .Build();
                context.Dishes.Add(vispannetje);

                var couscous = new DishBuilder().WithName("Couscous met scampi's")
                                                .Build();
                context.Dishes.Add(couscous);

                var today = new MealBuilder().WithDate(DateTime.Now)
                                             .WithDish(visVidee)
                                             .Build();
                context.Meals.Add(today);

                var tomorrow = new MealBuilder().WithDate(DateTime.Now.AddDays(1))
                                                .WithDish(spaghetti)
                                                .Build();
                context.Meals.Add(tomorrow);

                var dayAfterTomorrow = new MealBuilder().WithDate(DateTime.Now.AddDays(2))
                                                        .WithDish(vispannetje)
                                                        .Build();
                context.Meals.Add(dayAfterTomorrow);

                var sameDayNextWeek = new MealBuilder().WithDate(DateTime.Now.AddDays(7))
                                                         .WithDish(couscous)
                                                         .Build();
                context.Meals.Add(sameDayNextWeek);

                var nextWeek = new MealBuilder().WithDate(DateTime.Now.AddDays(10))
                                                .Build();
                context.Meals.Add(nextWeek);

                context.SaveChanges();
            }
        }
コード例 #3
0
 public void MakeMeal(MealBuilder builder)
 {
     builder.AddSandwich();
     builder.AddSideOrder();
     builder.AddDrink();
     builder.AddOfferItem();
     builder.SetPrice();
 }
コード例 #4
0
    public void Main()
    {
        MealBuilder mealBuilder = new MealBuilder();
        var         vegMeal     = mealBuilder.PrepareVegMeal();

        Console.WriteLine("Veg Meal:");
        vegMeal.ShowItems();
        Console.WriteLine("Total Cost: " + vegMeal.GetCost());
    }
コード例 #5
0
ファイル: Program.cs プロジェクト: samusrex/netDesignPatterns
        static void Main(string[] args)
        {
            #region Builder Pattern
            Console.WriteLine("-------Builder Pattern--------");
            MealBuilder mb = new MealBuilder();

            Meal Vegan = mb.PrepareVegMeal();
            Console.WriteLine("Preparing...Vegan");
            Vegan.ShowItems();
            Console.WriteLine("Cost:{0}", Vegan.GetCost());


            MealBuilder mbu = new MealBuilder();

            Meal HardCode = mb.PrepareNonVegMeal();
            Console.WriteLine("Preparing...Hard");
            Vegan.ShowItems();
            Console.WriteLine("Cost:{0}", HardCode.GetCost());
            #endregion
            Console.WriteLine("---------------------------");


            Console.WriteLine("-------ProtoType Pattern---------");
            ShapeCache.LoadCache();

            ProtoProj.Shape clonedShape = (ProtoProj.Shape)ShapeCache.GetShape("1");
            Console.WriteLine("Shape: {0}", clonedShape.GetType());

            ProtoProj.Shape clonedShape1 = (ProtoProj.Shape)ShapeCache.GetShape("2");
            Console.WriteLine("Shape: {0}", clonedShape1.GetType());

            ProtoProj.Shape clonedShape2 = (ProtoProj.Shape)ShapeCache.GetShape("3");
            Console.WriteLine("Shape: {0}", clonedShape2.GetType());


            Console.WriteLine("-------Adapter Pattern------");

            AudioPlayer ap = new AudioPlayer();
            ap.Play("mp4", "alone.mp4");
            ap.Play("mp3", "more_than_words.mp3");
            ap.Play("vlx", "beyond_horizon.vlc");

            Console.WriteLine("-----Bridge Pattern------");

            BridgeProj.Shape red   = new BridgeProj.Circle(new RedCircle(), 100, 100, 100);
            BridgeProj.Shape green = new BridgeProj.Circle(new GreenCircle(), 100, 100, 100);

            red.Draw();
            green.Draw();

            Console.WriteLine("---------------------------");



            Console.ReadKey();
        }
コード例 #6
0
        public void Start()
        {
            var mealBuilder = new MealBuilder();
            var vegMeal     = mealBuilder.PrepareVegMeal();

            logger.Info($"Veg Meal: ");
            vegMeal.ShowItems();

            var nonVegMeal = mealBuilder.PrepareNonVegMeal();

            logger.Info($"Non Veg Meal: ");
            nonVegMeal.ShowItems();
        }
コード例 #7
0
        static void Main(string[] args)
        {
            MealBuilder vegMealBuilder = new MealBuilder();
            Meal        vegMeal        = vegMealBuilder.PrepareVegMeal();

            vegMeal.ShowMealItems();
            Console.WriteLine($"\nTotal Price : Rs.{vegMeal.GetFinalCost()}/-");
            Meal nonVegMeal = vegMealBuilder.PrepareNonVegMeal();

            nonVegMeal.ShowMealItems();
            Console.WriteLine($"\nTotal Price : Rs.{nonVegMeal.GetFinalCost()}/-");
            Console.ReadLine();
        }
コード例 #8
0
        static void TestFoods()
        {
            MealBuilder mealBuilder = new MealBuilder();
            Meal        vegMeal     = mealBuilder.PrepareVegMeal();

            vegMeal.ShowItems();

            Debug.WriteLine($"total price: {vegMeal.CalculateCost()}");

            Meal nonVegMeal = mealBuilder.PrepareNonVegMeal();

            nonVegMeal.ShowItems();
            Debug.WriteLine($"total price: {nonVegMeal.CalculateCost()}");
        }
コード例 #9
0
        public double BuildMealForUser(List <FoodMenuModel> selectedMealItems)
        {
            Console.WriteLine();
            Console.WriteLine("You Selected Below Meal Items");
            Console.WriteLine("_______________________________");
            MealBuilder mealBuilder = new MealBuilder();

            mealBuilder.PrepareMeal(selectedMealItems);
            mealBuilder.meal.ShowItems();
            var totalCost = mealBuilder.meal.GetCost();

            Console.WriteLine("Total Cost(Rs.): {0}", totalCost);
            return(totalCost);
        }
コード例 #10
0
        static void Main(string[] args)
        {
            MealBuilder mealBuilder = new MealBuilder();

            Meal vegMeal = mealBuilder.PrepareVegMeal();

            Console.WriteLine("Vegetable Meal -> ");
            vegMeal.ShowItems();
            Console.WriteLine("Total Cost: " + vegMeal.GetCost());

            Meal nonVegMeal = mealBuilder.PrepareNonVegMeal();

            Console.WriteLine("Non-Vegetable Meal -> ");
            nonVegMeal.ShowItems();
            Console.WriteLine("Total Cost: " + nonVegMeal.GetCost());
        }
コード例 #11
0
        public void Builder_Pattern_Test()
        {
            var builder = new MealBuilder();

            var vegMeal  = builder.PrepareVegMeal();
            var vegItems = vegMeal.GetItems();

            Assert.IsInstanceOfType(vegItems[0], typeof(VegBurger));
            Assert.IsInstanceOfType(vegItems[1], typeof(Coke));


            var chickenMeal  = builder.PrepareNonVegMeal();
            var chickenItems = chickenMeal.GetItems();

            Assert.IsInstanceOfType(chickenItems[0], typeof(ChickenBurger));
            Assert.IsInstanceOfType(chickenItems[1], typeof(Pepsi));
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: kevinricar24/POO-CSharp
        public void DemoBuilderPattern()
        {
            Console.WriteLine("-----------------Builder Pattern Example-----------------");
            MealBuilder mealBuilder = new MealBuilder();

            Meal vegMeal = mealBuilder.PrepareVegMeal();

            Console.WriteLine("Veg Meal");
            vegMeal.showItems();
            Console.WriteLine("Total Cost: {0}", vegMeal.getCost());
            Console.WriteLine("");
            Meal nonVegMeal = mealBuilder.NonprepareVegMeal();

            Console.WriteLine("Non-Veg Meal");
            nonVegMeal.showItems();
            Console.WriteLine("Total Cost: {0}", nonVegMeal.getCost());
        }
コード例 #13
0
        public static void Start()
        {
            MealBuilder mealBuilder = new MealBuilder();

            Meal vegMeal = mealBuilder.PrepareVegMeal();

            Console.WriteLine("Veg Meal");
            vegMeal.ShowItems();
            Console.WriteLine($"Total Cost: {vegMeal.GetCost()}");


            Meal nonVegMeal = mealBuilder.PrepareNonVegMeal();

            Console.WriteLine("\n\nNon-Veg Meal");
            nonVegMeal.ShowItems();
            Console.WriteLine($"Total Cost: {nonVegMeal.GetCost()}");
        }
コード例 #14
0
ファイル: FormMain.cs プロジェクト: a275979650/DesignModeTest
        private void btBuilderPattern_Click(object sender, EventArgs e)
        {
            string      str         = "";
            MealBuilder mealBuilder = new MealBuilder();

            Meal vegMeal = mealBuilder.prepareVegMeal();

            str += "Veg Meal\r\n";
            str += vegMeal.showItems();
            str += "Total Cost: " + vegMeal.getCost() + "\r\n";

            Meal nonVegMeal = mealBuilder.prepareNonVegMeal();

            str += "\n\nNon-Veg Meal\r\n";
            str += nonVegMeal.showItems();
            str += "Total Cost: " + nonVegMeal.getCost() + "\r\n";
            tbOutWindow.Text = str;
        }
コード例 #15
0
        /// <summary>
        /// This driver called that module which followed Builder Design Pattern
        /// </summary>
        /// <param name="selectedMealItems"></param>
        /// <returns></returns>
        public double BuildMealForUser(List <FoodMenuModel> selectedMealItems)
        {
            Console.WriteLine();
            Console.WriteLine("You Selected Below Meal Items");
            Console.WriteLine("_______________________________");
            MealBuilder mealBuilder = new MealBuilder();

            mealBuilder.PrepareMeal(selectedMealItems);
            mealBuilder.meal.ShowItems();
            var foodCost = mealBuilder.meal.GetCost();

            //Calculation of Tax
            var taxCalculationContext = new TaxCalculationContext(new OneStarTaxCalculator());
            var taxAmount             = taxCalculationContext.GetCalculatedTax(foodCost, 0.05, false);
            var totalCostofFood       = foodCost + taxAmount;

            Console.WriteLine("Total Cost(Rs.): {0}", totalCostofFood);
            Console.WriteLine("Total Tax(Rs.): {0}", taxAmount);
            return(totalCostofFood);
        }
コード例 #16
0
        public double BuildMealForUser(List <FoodMenuModel> selectedMealItems)
        {
            Console.WriteLine("______________________________");
            Console.WriteLine("You selected those items:");
            Console.WriteLine("______________________________");
            MealBuilder mealBuilder = new MealBuilder();

            mealBuilder.PrepareMeal(selectedMealItems);
            mealBuilder.meal.ShowItems();
            var foodCost = mealBuilder.meal.ComputePrice();

            var delivery = new DeliveryTaxCalculator();
            var taxCalculationContext = new DeliveryTaxCalculationContext(delivery);

            Console.WriteLine($"Delivery fee: {delivery.deliveryTax} dollars");
            var taxAmount = taxCalculationContext.GetCalculatedTax(foodCost);

            Console.WriteLine($"Total cost: {taxAmount}");
            return(taxAmount);
        }
コード例 #17
0
        static void Builder()
        {
            //the Meal Builder:
            MealBuilder mealBuilder = new MealBuilder();

            Meal vegMeal = mealBuilder.prepareVegMeal();

            Console.WriteLine("Veg Meal");
            vegMeal.showItems();
            Console.WriteLine("Total Cost: " + vegMeal.getCost());

            Meal nonVegMeal = mealBuilder.prepareNonVegMeal();

            Console.WriteLine("\n\nNon-Veg Meal");
            nonVegMeal.showItems();
            Console.WriteLine("Total Cost: " + nonVegMeal.getCost());

            //the Computer Bulder
            Computer comp = new ComputerBuilder("500 GB", "2 GB").setBluetoothEnabled(true).setGraphicsCardEnabled(true).build();
        }
コード例 #18
0
        public Meal CreateMeal(string name, Combination combination)
        {
            IMealBuilder builder = new MealBuilder(name);

            switch (combination)
            {
            case Combination.Pie:
                ConcreteMealBuilder pie = new ConcreteMealBuilder();
                pie.Pie(builder);
                return(builder.BuildMeal());

            case Combination.Kebab:
                ConcreteMealBuilder kebab = new ConcreteMealBuilder();
                kebab.Kebab(builder);
                return(builder.BuildMeal());

            case Combination.Barbeque:
                ConcreteMealBuilder barbeque = new ConcreteMealBuilder();
                barbeque.Barbeque(builder);
                return(builder.BuildMeal());
            }
            return(null);
        }
コード例 #19
0
ファイル: Example.cs プロジェクト: TimCollins/DesignPatterns
 public void MakeMeal(MealBuilder builder)
 {
     builder.AddSandwich();
     builder.AddSideOrder();
     builder.AddDrink();
     builder.AddOfferItem();
     builder.SetPrice();
 }
コード例 #20
0
        static void Main(string[] args)
        {
            Console.WriteLine("Singleton Pattern");

            // Singleton Pattern
            SingleObject singleObject = SingleObject.Instance();

            singleObject.ShowMessage();

            Console.WriteLine("\nBuilder Pattern");

            // Builder Pattern
            MealBuilder mealBuilder = new MealBuilder();

            Meal vegMeal = mealBuilder.PrepareVegMeal();

            Console.WriteLine("Veg Meal");
            vegMeal.ShowItems();
            Console.WriteLine("Total Cost : " + vegMeal.GetCost());

            Meal nonVegMeal = mealBuilder.PrepareNonVegMeal();

            Console.WriteLine("NonVeg Meal");
            nonVegMeal.ShowItems();
            Console.WriteLine("Total Cost : " + nonVegMeal.GetCost());

            Console.WriteLine("\nAbstract Factory");

            // Abstract Factory Pattern
            AbstractFactory shapeFactory = FactoryProducer.GetFactory("shape");
            IShape          circleShape  = shapeFactory.GetShape("circle");

            circleShape.Draw();

            AbstractFactory colorFactory = FactoryProducer.GetFactory("color");
            IColor          blueColor    = colorFactory.GetColor("blue");

            blueColor.Fill();

            Console.WriteLine("\nAdapter");

            //Adapter Pattern
            AudioPlayer audioPlayer = new AudioPlayer();

            audioPlayer.Play("mp4");
            audioPlayer.Play("flac");
            audioPlayer.Play("vlc");

            Console.WriteLine("\nFacade");

            //Facade Pattern
            ShapeMaker shapeMaker = new ShapeMaker();

            shapeMaker.DrawCircle();
            shapeMaker.DrawRectangle();
            shapeMaker.DrawSquare();

            Console.WriteLine("\nDecorator doesn't work");

            //Decorator Pattern
            IDecoratorShape rectangle    = new RectangleDecorator();
            IDecoratorShape redRectangle = new RedShapeDecorator(new RectangleDecorator());

            Console.WriteLine("Rectangle with no color");
            rectangle.Draw();
            Console.WriteLine("Rectangle with color");
            redRectangle.Draw();

            Console.WriteLine("\nComposite");

            //Composite Pattern
            Employee DSI           = new Employee("employee1", "DSI", 100000);
            Employee chefDeProjet1 = new Employee("employee2", "Chef de projet", 60000);
            Employee chefDeProjet2 = new Employee("employee3", "Chef de projet", 60000);
            Employee dev1          = new Employee("employee4", "Développeur", 40000);
            Employee dev2          = new Employee("employee5", "Développeur", 40000);

            DSI.Add(chefDeProjet1);
            DSI.Add(chefDeProjet2);
            chefDeProjet1.Add(dev1);
            chefDeProjet2.Add(dev2);

            Console.WriteLine(DSI.Details());
            foreach (Employee e1 in DSI.GetSubordinates())
            {
                Console.WriteLine(e1.Details());
                foreach (Employee e2 in e1.GetSubordinates())
                {
                    Console.WriteLine(e2.Details());
                }
            }

            Console.WriteLine("\nBridge");

            //Bridge Pattern
            BridgeShape shape1 = new BridgeCircle(10, 10, 1, new GreenCircle());
            BridgeShape shape2 = new BridgeCircle(100, 100, 10, new RedCircle());

            shape1.Draw();
            shape2.Draw();

            Console.WriteLine("\nCommand");

            //Command Pattern
            Stock    stock1   = new Stock("laptop", 100);
            BuyStock buyStock = new BuyStock(stock1);

            Stock     stock2    = new Stock("screen", 30);
            SellStock sellStock = new SellStock(stock2);

            Broker broker = new Broker();

            broker.TakeOrder(buyStock);
            broker.TakeOrder(sellStock);
            broker.PlaceOrders();

            Console.WriteLine("\nInterpreter");

            //Interpreter Pattern
            IExpression isMale    = InterpreterPatternDemo.GetMaleExpression();
            IExpression isMarried = InterpreterPatternDemo.GetMarriedWomanExpression();

            Console.WriteLine("John is male ? " + isMale.Interpret("john"));
            Console.WriteLine("Barbara is male ? " + isMale.Interpret("barbara"));

            Console.WriteLine("Julie is married ? " + isMarried.Interpret("julie married"));
            Console.WriteLine("Bob is married ? " + isMarried.Interpret("bob married"));
        }
コード例 #21
0
 public void Construct(MealBuilder builder)
 {
     builder.PrepareFoods();
     builder.PrepareDrinks();
 }
コード例 #22
0
 public void Construct(MealBuilder mealBuilder)
 {
     mealBuilder.GetFood();
     mealBuilder.GetDesert();
     mealBuilder.GetBeverage();
 }