设计模式(一):工厂方法模式

来源:互联网 发布:java从头制作游戏 编辑:程序博客网 时间:2024/04/30 13:35

        
 class Test    {             /// <summary>        /// 工厂方法模式之所以可以解决简单工厂的模式,        /// 是因为它的实现把具体产品的创建推迟到子类中,        /// 此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,        /// 这样工厂方法模式就可以允许系统不修改工厂类逻辑的情况下来添加新产品,        /// 这样也就克服了简单工厂模式中缺点。下面看下工厂模式的具体实现代码(        /// 这里还是以简单工厂模式中点菜的例子来实现):        /// </summary>        static void Main()        {                       //初始化工厂            Creator tomofactory = new TomatoScrambledEggsFactory();            //new出第一种food            Food tomo= tomofactory.CreateFoodFactory();            tomo.Print();            Creator hongshaorou = new hongshaorouFactory();            //new出第二种food            Food rou= hongshaorou.CreateFoodFactory();            rou.Print();            Console.ReadKey();        }        /// <summary>        /// 关于菜的抽象类,必须实现print方法        /// </summary>        public abstract class Food        {            public abstract void Print();        }        /// <summary>        /// 实现的一个Food        /// </summary>        public class TomatoScrambledEggs:Food        {            public override void Print()            {                Console.WriteLine("TomatoScrambledEggs");            }         }        /// <summary>        /// 实现的第二个Food        /// </summary>        public class ShreddedPorkWithPotatoes : Food        {            public override void Print()            {                Console.WriteLine("ShreddedPorkWithPotatoes");            }        }        /// <summary>        /// 实现的第三个Food        /// </summary>        public class HonShaorou:Food        {         public override void Print()            {                Console.WriteLine("hongshaorou");            }        }        /// <summary>        /// 抽象工厂类,必须实现new对象的方法        /// </summary>        public abstract class Creator        {                       public abstract Food CreateFoodFactory();        }        /// <summary>        /// new一种food        /// </summary>        public class TomatoScrambledEggsFactory:Creator        {            public override Food CreateFoodFactory()            {                return new TomatoScrambledEggs();            }        }        /// <summary>        /// new第二种food        /// </summary>        public class ShreddedPorkWithPotatoesFactory : Creator        {            public override Food CreateFoodFactory()            {                return new ShreddedPorkWithPotatoes();            }        }        /// <summary>        /// new第三种food        /// </summary>        public class hongshaorouFactory : Creator        {            public override Food CreateFoodFactory()            {                return new HonShaorou();            }        }           }  

0 0
原创粉丝点击