public Food VeggieSelect(Food order)
 {
     if (order.GetType() == (typeof(Olives)))
     {
         Olives olives = new Olives();
         return olives;
     }
     if (order.GetType() == (typeof(Lettuce)))
     {
         Lettuce lettuce = new Lettuce();
         return lettuce;
     }
     if (order.GetType() == (typeof(Spinach)))
     {
         Spinach spinach = new Spinach();
         return spinach;
     }
     if (order.GetType() == (typeof(Pickles)))
     {
         Pickles pickles = new Pickles();
         return pickles;
     }
     else
     {
         Lettuce lettuce = new Lettuce();
         return lettuce;
     }
 }
        static void Main(string[] args)
        {
            // 创建一个菠菜实例并调用模板方法
            Vegetabel spinach = new Spinach();

            spinach.CookVegetabel();

            Console.WriteLine();

            // 创建一个大白菜实例并调用模板方法
            Vegetabel cabbage = new ChineseCabbage();

            cabbage.CookVegetabel();
            Console.Read();
        }
 public void TemplateTest()
 {
     {
         var a = new ConcreteClassA();
         a.TemplateMethod();
         var b = new ConcreteClassB();
         b.TemplateMethod();
     }
     {
         var spinach = new Spinach();
         spinach.CookVegetabel();
         var chineseCabbage = new ChineseCabbage();
         chineseCabbage.CookVegetabel();
     }
 }
Exemple #4
0
        /// <summary>
        /// 以不同的菜,但是其炒菜流程是一样的作为案例
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //创建一个菠菜实例并调用模板方法
            Console.WriteLine("炒菠菜");
            Vegetable spinach = new Spinach();

            spinach.CookVegetable();
            spinach.PourOil();
            spinach.HeatOil();
            spinach.PourVegetable();
            spinach.Stir_Fry();

            //Console.WriteLine("-----------------\n");
            //Console.WriteLine("炒白菜");
            //ChineseCabbage chineseCabbage=new ChineseCabbage();
            //chineseCabbage.PourVegetable();
            //Console.WriteLine("-----------------\n");
            Console.Read();
        }
Exemple #5
0
 public object FindItem(string order)
 {
     if (order == "Shredded Cheddar")
     {
         ShreddedCheddar shredChed = new ShreddedCheddar();
         return(shredChed);
     }
     else if (order == "Provolone")
     {
         Provolone prov = new Provolone();
         return(prov);
     }
     else if (order == "Cheddar Jack")
     {
         CheddarJack chedJack = new CheddarJack();
         return(chedJack);
     }
     else if (order == "Colby Jack")
     {
         ColbyJack colbyJack = new ColbyJack();
         return(colbyJack);
     }
     else if (order == "Seven Grain Wheat Bread")
     {
         SevenGrainWheatBread sevenWheat = new SevenGrainWheatBread();
         return(sevenWheat);
     }
     else if (order == "Wheat Bread")
     {
         WheatBread wheat = new WheatBread();
         return(wheat);
     }
     else if (order == "Italian")
     {
         Italian italian = new Italian();
         return(italian);
     }
     else if (order == "Tortilla")
     {
         Tortilla tortilla = new Tortilla();
         return(tortilla);
     }
     else if (order == "Coke")
     {
         Coke coke = new Coke();
         return(coke);
     }
     else if (order == "Mountain Dew")
     {
         MountainDew mtnDew = new MountainDew();
         return(mtnDew);
     }
     else if (order == "Milk")
     {
         Milk milk = new Milk();
         return(milk);
     }
     else if (order == "Orange Juice")
     {
         OrangeJuice OJ = new OrangeJuice();
         return(OJ);
     }
     else if (order == "Coffee")
     {
         Coffee coffee = new Coffee();
         return(coffee);
     }
     else if (order == "Gatorade")
     {
         Gatorade gatorade = new Gatorade();
         return(gatorade);
     }
     else if (order == "Ham")
     {
         Ham ham = new Ham();
         return(ham);
     }
     else if (order == "Turkey")
     {
         Turkey turkey = new Turkey();
         return(turkey);
     }
     else if (order == "Roast Beef")
     {
         RoastBeef beef = new RoastBeef();
         return(beef);
     }
     else if (order == "Salami")
     {
         Salami salami = new Salami();
         return(salami);
     }
     else if (order == "Bacon")
     {
         Bacon bacon = new Bacon();
         return(bacon);
     }
     else if (order == "Mayo")
     {
         Mayo mayo = new Mayo();
         return(mayo);
     }
     else if (order == "Chipotle Mayo")
     {
         ChipotleMayo chipMayo = new ChipotleMayo();
         return(chipMayo);
     }
     else if (order == "Olives")
     {
         Olives olives = new Olives();
         return(olives);
     }
     else if (order == "Lettuce")
     {
         Lettuce lettuce = new Lettuce();
         return(lettuce);
     }
     else if (order == "Spinach")
     {
         Spinach spinach = new Spinach();
         return(spinach);
     }
     else if (order == "Pickles")
     {
         Pickles pickles = new Pickles();
         return(pickles);
     }
     else
     {
         Ham ham = new Ham();
         return(ham);
     }
 }
        public override void OnDoubleClick(Mobile from)
        {
            if (m_sower == null || m_sower.Deleted)
            {
                m_sower = from;
            }

            if (from.Mounted && !CropHelper.CanWorkMounted)
            {
                from.SendMessage("You cannot harvest a crop while mounted.");
                return;
            }

            if (DateTime.Now > lastpicked.AddSeconds(3))               // 3 seconds between picking
            {
                lastpicked = DateTime.Now;

                int cookValue = (int)from.Skills[SkillName.Cooking].Value / 20;
                if (cookValue == 0)
                {
                    from.SendMessage("You have no idea how to harvest this crop.");
                    return;
                }

                if (from.InRange(this.GetWorldLocation(), 1))
                {
                    if (m_yield < 1)
                    {
                        from.SendMessage("There is nothing here to harvest.");

                        if (PlayerCanDestroy && !(m_sower.AccessLevel > AccessLevel.Counselor))
                        {
                            UpRootGump g = new UpRootGump(from, this);
                            from.SendGump(g);
                        }
                    }
                    else                     //check skill and sower
                    {
                        from.Direction = from.GetDirectionTo(this);

                        from.Animate(from.Mounted ? 29:32, 5, 1, true, false, 0);

                        if (from == m_sower)
                        {
                            cookValue  *= 2;
                            m_lastvisit = DateTime.Now;
                        }

                        if (cookValue > m_yield)
                        {
                            cookValue = m_yield + 1;
                        }

                        int pick = Utility.Random(cookValue);
                        if (pick == 0)
                        {
                            from.SendMessage("You do not manage to harvest any crops.");
                            return;
                        }

                        m_yield -= pick;
                        from.SendMessage("You harvest {0} crop{1}!", pick, (pick == 1 ? "" : "s"));

                        //PublicOverheadMessage( MessageType.Regular, 0x3BD, false, string.Format( "{0}", m_yield ));
                        ((Item)this).ItemID = pickedGraphic;

                        Spinach crop = new Spinach(pick);
                        from.AddToBackpack(crop);

                        if (SowerPickTime != TimeSpan.Zero && m_lastvisit + SowerPickTime < DateTime.Now && !(m_sower.AccessLevel > AccessLevel.Counselor))
                        {
                            this.UpRoot(from);
                            return;
                        }

                        if (!regrowTimer.Running)
                        {
                            //regrowTimer = new CropTimer( this );
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendMessage("You are too far away to harvest anything.");
                }
            }
        }
Exemple #7
0
        public static void Main(string[] args)
        {
            //单例模式
            Console.WriteLine("---------Singleton----------");
            var s1 = Singleton.GetSingleton();
            var s2 = Singleton.GetSingleton();

            Console.WriteLine(s1.GetHashCode());
            Console.WriteLine(s2.GetHashCode());

            //简单工厂模式
            Console.WriteLine("---------SimpleFactory----------");
            var f1 = SimpleFoodFactory.CreateFood("TomaoScrambledEggs");

            f1.Print();
            var f2 = SimpleFoodFactory.CreateFood("ShreddedPorkWithPotatoes");

            f2.Print();

            //工厂模式
            Console.WriteLine("---------Factory----------");
            Creator shreddedPorkWithPotatoesFactory = new ShreddedPorkWithPotatoesFactory();
            Creator tomatoScrambledEggsFactory      = new TomatoScrambledEggsFactory();
            Creator minceMeatEggplantFactor         = new MincedMeatEggplantFactory();
            var     tomatoScrambleEggs = tomatoScrambledEggsFactory.CreateFoodFactory();

            tomatoScrambleEggs.Print();

            var shreddedPorkWithPotatoes = shreddedPorkWithPotatoesFactory.CreateFoodFactory();

            shreddedPorkWithPotatoes.Print();

            var minceMeatEggplant = minceMeatEggplantFactor.CreateFoodFactory();

            minceMeatEggplant.Print();

            //抽象工厂模式
            Console.WriteLine("---------AbstractFactory----------");
            AbstractFactory nanChangFactory = new NanChangFactory();

            nanChangFactory.CreateYaBo().Print();
            nanChangFactory.CreateYaJia().Print();

            AbstractFactory shangHaiFactory = new ShangHaiFactory();

            shangHaiFactory.CreateYaBo().Print();
            shangHaiFactory.CreateYaJia().Print();

            AbstractFactory huNanFactory = new HuNanFactory();

            huNanFactory.CreateYaBo().Print();
            huNanFactory.CreateYaJia().Print();


            //建造者模式
            Console.WriteLine("---------Builder_Patterns----------");
            var     director = new Director();
            Builder b1       = new BuildFirst();
            Builder b2       = new BuildSecond();

            director.Construct(b1);
            var c1 = b1.GetComputer();

            c1.Show();

            director.Construct(b2);
            var c2 = b2.GetComputer();

            c2.Show();


            //原型模式
            Console.WriteLine("---------Prototype_Patterns----------");

            MonkeyKingPrototype prototype = new ConcretePrototype("pipixiong");

            MonkeyKingPrototype cloneMonkeyKingPrototype = prototype.Clone() as ConcretePrototype;

            Console.WriteLine("1:" + cloneMonkeyKingPrototype?.Id);

            MonkeyKingPrototype clonePrototype = prototype.Clone() as ConcretePrototype;

            Console.WriteLine("2:" + cloneMonkeyKingPrototype?.Id);

            //适配器模式
            Console.WriteLine("---------Adapter_Patterns----------");
            ThreeHole threeHole = new PowerAdapter();

            threeHole.Request();

            //桥接模式
            Console.WriteLine("---------Bridge_Patterns----------");
            RemoteControl remoteControl = new ConcreteRemote();

            remoteControl.Implementor = new XiaoMi();
            remoteControl.On();
            remoteControl.Off();
            remoteControl.SetChannel();

            remoteControl.Implementor = new Samsung();
            remoteControl.On();
            remoteControl.Off();
            remoteControl.SetChannel();


            //装饰者模式
            Console.WriteLine("---------Decorator_Patterns----------");
            Phone     phone            = new ApplePhone();
            Decorator stickerDecorator = new Sticker(phone);

            stickerDecorator.Print();

            Console.WriteLine("---------");
            Decorator accessoriesDecorator = new Accessories(phone);

            accessoriesDecorator.Print();

            Console.WriteLine("---------");
            var sticker     = new Sticker(phone);
            var accessories = new Accessories(sticker);

            accessories.Print();

            //组合模式
            Console.WriteLine("---------Composite_Patterns----------");
            var complexGraphics = new ComplexGraphics("一个复杂图形和两条线段组成的复杂图形");

            complexGraphics.Add(new Line("线A"));
            var complexGraphicsCG = new ComplexGraphics("一个圆和一条线组成的复杂图形");

            complexGraphicsCG.Add(new Circle("圆"));
            complexGraphicsCG.Add(new Line("线B"));
            complexGraphics.Add(complexGraphicsCG);
            var line = new Line("线C");

            complexGraphics.Add(line);

            Console.WriteLine("复杂图形的绘制如下:");
            Console.WriteLine("---------------------");
            complexGraphics.Draw();
            Console.WriteLine("复杂图形绘制完成");
            Console.WriteLine("---------------------");

            complexGraphics.Remove(line);
            Console.WriteLine("移除线段C后,复杂图形的绘制如下:");
            Console.WriteLine("---------------------");
            complexGraphics.Draw();
            Console.WriteLine("复杂图形绘制完成");
            Console.WriteLine("---------------------");

            //外观模式
            Console.WriteLine("---------Facade_Patterns----------");
            var facade = new RegistrationFacade();

            if (facade.RegisterCourse("设计模式", "pomelo"))
            {
                Console.WriteLine("选课成功");
            }
            else
            {
                Console.WriteLine("选课失败");
            }

            //享元模式
            Console.WriteLine("---------Flyweight_Patterns----------");

            var externalstate = 10;
            var factory       = new FlyweightFactory();
            var flyweightA    = factory.GetfFlyweight("A");

            flyweightA?.Operation(externalstate);

            var flyweightB = factory.GetfFlyweight("B");

            flyweightB?.Operation(externalstate);
            var flyweightC = factory.GetfFlyweight("C");

            flyweightC?.Operation(externalstate);

            var flyweightD = factory.GetfFlyweight("D");

            if (flyweightD != null)
            {
                flyweightD.Operation(externalstate);
            }
            else
            {
                Console.WriteLine("驻留池中不存在字符串D");
                // 这时候就需要创建一个对象并放入驻留池中
                var d = new ConcreteFlyweight("D");
                factory.Flyweights.Add("D", d);
            }

            //代理模式
            Console.WriteLine("---------Proxy_Patterns----------");
            Person proxy = new Friend();

            proxy.BuyProduct();

            //模板方法
            Console.WriteLine("---------Template_Patterns----------");
            var spinach = new Spinach();

            spinach.cookVegetable();


            //命令模式
            Console.WriteLine("---------Command_Patterns----------");
            var     receiver = new Receiver();
            Command command  = new ConcreteCommand(receiver);
            var     invoke   = new Invoke(command);

            invoke.ExecuteCommand();

            //迭代器模式
            Console.WriteLine("---------Iterator_Patterns----------");
            IListCollection list    = new ConcreteList();
            var             terator = list.GetITerator();

            while (terator.MoveNext())
            {
                var i = (int)terator.GetCurrent();
                Console.WriteLine(i.ToString());
                terator.Next();
            }

            //观察者模式
            Console.WriteLine("---------Observer_Patterns----------");
            TenXun tenXun = new TenXunGame("LOL", "游戏需要更新");

            tenXun.AddObserver(new Subscriber("pomelo"));
            tenXun.AddObserver(new Subscriber("yuuko"));
            tenXun.Update();
            //中介者模式
            Console.WriteLine("---------Mediator_Patterns----------");
            AbstractCardPartner a = new ParterA();
            AbstractCardPartner b = new ParterB();

            a.MoneyCount = 20;
            b.MoneyCount = 20;
            AbstractMediator mediator = new MediatorPater(a, b);

            a.ChangCount(5, mediator);
            Console.WriteLine("A现在的钱是:{0}", a.MoneyCount);
            Console.WriteLine("B现在的钱是:{0}", b.MoneyCount);

            b.ChangCount(10, mediator);
            Console.WriteLine("A现在的钱是:{0}", a.MoneyCount);
            Console.WriteLine("B现在的钱是:{0}", b.MoneyCount);

            //状态者模式
            Console.WriteLine("---------state_Patterns----------");
            var account = new Account("pomelo");

            account.Deposit(1000);
            account.Deposit(200);
            account.Deposit(600);
            account.PayInterest();
            account.Withdraw(2000);
            account.Withdraw(500);
            //策略者模式
            Console.WriteLine("---------stragety_Patterns----------");
            var operation = new InterestOperation(new PersonalTaxStrategy());

            Console.WriteLine("个人支付的税为:{0}", operation.GetTax(5000.00));

            operation = new InterestOperation(new EnterpriseTaxStrategy());
            Console.WriteLine("企业支付的税为:{0}", operation.GetTax(50000.00));
            //责任链模式
            Console.WriteLine("---------Responsibility_Patterns----------");
            var purchaseRequest     = new PurchaseRequest(4000, "phone");
            var softPurchaseRequest = new PurchaseRequest(10000, "vs");
            var computeRequest      = new PurchaseRequest(40000, "computer");


            Approver manager = new Manager("pomelo");
            Approver vp      = new VicePresident("yuuko");
            Approver pre     = new President("jesse");

            manager.NextApprover = vp;
            vp.NextApprover      = pre;

            manager.ProcessRequest(purchaseRequest);
            manager.ProcessRequest(softPurchaseRequest);
            manager.ProcessRequest(computeRequest);

            //访问者模式
            Console.WriteLine("---------Vistor_Patterns----------");
            var objectStructure = new ObjectStructure();

            foreach (Element e in objectStructure.Elements)
            {
                e.Accept(new ConcreteVistor());
            }

            //备忘录模式
            Console.WriteLine("---------Memento_Patterns----------");

            var persons = new List <ContactPerson>
            {
                new ContactPerson {
                    Name = "Pomelo", MobileNum = "123445"
                },
                new ContactPerson {
                    Name = "Yuuko", MobileNum = "234565"
                },
                new ContactPerson {
                    Name = "Jeese ", MobileNum = "231455"
                }
            };
            var mobileOwner = new MobileOwner(persons);

            mobileOwner.Show();

            var caretaker = new Caretaker();

            caretaker.ContactMementoDic.Add(DateTime.Now.ToString(CultureInfo.InvariantCulture),
                                            mobileOwner.CreateContactMemento());

            Console.WriteLine("----移除最后一个联系人--------");
            mobileOwner.ContactPersons.RemoveAt(2);
            mobileOwner.Show();
            Thread.Sleep(1000);
            caretaker.ContactMementoDic.Add(DateTime.Now.ToString(CultureInfo.InvariantCulture),
                                            mobileOwner.CreateContactMemento());

            Console.WriteLine("-------恢复联系人列表,请从以下列表选择恢复的日期------");
            var keyCollection = caretaker.ContactMementoDic.Keys;

            foreach (var k in keyCollection)
            {
                Console.WriteLine("Key = {0}", k);
            }
            while (true)
            {
                Console.Write("请输入数字,按窗口的关闭键退出:");

                var index = -1;
                try
                {
                    index = int.Parse(Console.ReadLine());
                }
                catch
                {
                    Console.WriteLine("输入的格式错误");
                    continue;
                }

                if (index < keyCollection.Count &&
                    caretaker.ContactMementoDic.TryGetValue(keyCollection.ElementAt(index), out var contactMentor))
                {
                    mobileOwner.RestoreMemento(contactMentor);
                    mobileOwner.Show();
                }
                else
                {
                    Console.WriteLine("输入的索引大于集合长度!");
                }
            }
        }
        public object FindItem(string order)
        {
            if (order == "Shredded Cheddar")
            {
                ShreddedCheddar shredChed = new ShreddedCheddar();
                return shredChed;
            }
            else if (order == "Provolone")
            {
                Provolone prov = new Provolone();
                return prov;
            }
            else if (order == "Cheddar Jack")
            {
                CheddarJack chedJack = new CheddarJack();
                return chedJack;
            }
            else if (order == "Colby Jack")
            {
                ColbyJack colbyJack = new ColbyJack();
                return colbyJack;
            }
            else if (order == "Seven Grain Wheat Bread")
            {
                SevenGrainWheatBread sevenWheat = new SevenGrainWheatBread();
                return sevenWheat;

            }
            else if (order == "Wheat Bread")
            {
                WheatBread wheat = new WheatBread();
                return wheat;
            }
            else if (order == "Italian")
            {
                Italian italian = new Italian();
                return italian;
            }
            else if (order == "Tortilla")
            {
                Tortilla tortilla = new Tortilla();
                return tortilla;
            }
            else if (order == "Coke")
            {
                Coke coke = new Coke();
                return coke;
            }
            else if (order == "Mountain Dew")
            {
                MountainDew mtnDew = new MountainDew();
                return mtnDew;
            }
            else if (order == "Milk")
            {
                Milk milk = new Milk();
                return milk;
            }
            else if (order == "Orange Juice")
            {
                OrangeJuice OJ = new OrangeJuice();
                return OJ;
            }
            else if (order == "Coffee")
            {
                Coffee coffee = new Coffee();
                return coffee;
            }
            else if (order == "Gatorade")
            {
                Gatorade gatorade = new Gatorade();
                return gatorade;
            }
            else if (order == "Ham")
            {
                Ham ham = new Ham();
                return ham;
            }
            else if (order == "Turkey")
            {
                Turkey turkey = new Turkey();
                return turkey;
            }
            else if (order == "Roast Beef")
            {
                RoastBeef beef = new RoastBeef();
                return beef;
            }
            else if (order == "Salami")
            {
                Salami salami = new Salami();
                return salami;
            }
            else if (order == "Bacon")
            {
                Bacon bacon = new Bacon();
                return bacon;
            }
            else if (order == "Mayo")
            {
                Mayo mayo = new Mayo();
                return mayo;
            }
            else if (order == "Chipotle Mayo")
            {
                ChipotleMayo chipMayo = new ChipotleMayo();
                return chipMayo;
            }
            else if (order == "Olives")
            {
                Olives olives = new Olives();
                return olives;
            }
            else if (order == "Lettuce")
            {
                Lettuce lettuce = new Lettuce();
                return lettuce;
            }
            else if (order == "Spinach")
            {
                Spinach spinach = new Spinach();
                return spinach;
            }
            else if (order == "Pickles")
            {
                Pickles pickles = new Pickles();
                return pickles;
            }
            else
            {
                Ham ham = new Ham();
                return ham;
            }
        }
Exemple #9
0
        public override void OnDoubleClick(Mobile from)
        {
            if (m_sower == null || m_sower.Deleted)
            {
                m_sower = from;
            }
            if (from != m_sower)
            {
                from.SendMessage("You do not own this plant !!!"); return;
            }

            if (from.Mounted && !CropHelper.CanWorkMounted)
            {
                from.SendMessage("You cannot harvest a crop while mounted."); return;
            }
            if (DateTime.UtcNow > lastpicked.AddSeconds(3))
            {
                lastpicked = DateTime.UtcNow;
                int cookValue = (int)from.Skills[SkillName.Cooking].Value / 20;
                if (cookValue == 0)
                {
                    from.SendMessage("You have no idea how to harvest this crop."); return;
                }
                if (from.InRange(this.GetWorldLocation(), 1))
                {
                    if (m_yield < 1)
                    {
                        from.SendMessage("There is nothing here to harvest.");
                    }
                    else
                    {
                        from.Direction = from.GetDirectionTo(this);
                        from.Animate(from.Mounted ? 29:32, 5, 1, true, false, 0);
                        m_lastvisit = DateTime.UtcNow;
                        if (cookValue > m_yield)
                        {
                            cookValue = m_yield + 1;
                        }
                        int pick = Utility.RandomMinMax(cookValue - 4, cookValue);
                        if (pick < 0)
                        {
                            pick = 0;
                        }
                        if (pick == 0)
                        {
                            from.SendMessage("You do not manage to harvest any crops."); return;
                        }
                        m_yield -= pick;
                        from.SendMessage("You harvest {0} crop{1}!", pick, (pick == 1 ? "" : "s"));
                        if (m_yield < 1)
                        {
                            ((Item)this).ItemID = pickedGraphic;
                        }
                        Spinach crop = new Spinach(pick);
                        from.AddToBackpack(crop);
                        if (!regrowTimer.Running)
                        {
                            regrowTimer.Start();
                        }
                    }
                }
                else
                {
                    from.SendMessage("You are too far away to harvest anything.");
                }
            }
        }