工厂模式

来源:互联网 发布:淘宝一件代发地址 编辑:程序博客网 时间:2024/06/07 19:18

原文链接:http://blog.jobbole.com/78064/


工厂方法模式之所以可以解决简单工厂的模式,是因为它的实现把具体产品的创建推迟到子类中,此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须实现的接口,这样工厂方法模式就可以允许系统不修改工厂类逻辑的情况下来添加新产品,这样也就克服了简单工厂模式中缺点。


using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace FactoryPattern{    class Program    {        /// <summary>        /// 客户端调用        /// </summary>        /// <param name="args"></param>        static void Main(string[] args)        {            // 初始化做菜的两个工厂()            Creator shreddedPorkWithPotatoesFactory = new ShreddedPorkWithPotatoesFactory();            Creator tomatoScrambledEggsFactory = new TomatoScrambledEggsFactory();            // 开始做西红柿炒蛋            Food tomatoScrambleEggs = tomatoScrambledEggsFactory.CreateFoddFactory();            tomatoScrambleEggs.Print();            //开始做土豆肉丝            Food shreddedPorkWithPotatoes = shreddedPorkWithPotatoesFactory.CreateFoddFactory();            shreddedPorkWithPotatoes.Print();            Console.Read();        }    }    /// <summary>    /// 菜抽象类    /// </summary>    public abstract class Food    {        // 输出点了什么菜        public abstract void Print();    }    /// <summary>    /// 西红柿炒鸡蛋这道菜    /// </summary>    public class TomatoScrambledEggs : Food    {        public override void Print()        {            Console.WriteLine("西红柿炒蛋好了");        }    }    /// <summary>    /// 土豆肉丝这道菜    /// </summary>    public class ShreddedPorkWithPotatoes : Food    {        public override void Print()        {            Console.WriteLine("土豆肉丝好了");        }    }    /// <summary>    /// 抽象工厂类    /// </summary>    public abstract class Creator    {        // 工厂方法        public abstract Food CreateFoddFactory();    }    /// <summary>    /// 西红柿炒蛋工厂类    /// </summary>    public class TomatoScrambledEggsFactory : Creator    {        /// <summary>        /// 负责创建西红柿炒蛋这道菜        /// </summary>        /// <returns></returns>        public override Food CreateFoddFactory()        {            return new TomatoScrambledEggs();        }    }    /// <summary>    /// 土豆肉丝工厂类    /// </summary>    public class ShreddedPorkWithPotatoesFactory : Creator    {        /// <summary>        /// 负责创建土豆肉丝这道菜        /// </summary>        /// <returns></returns>        public override Food CreateFoddFactory()        {            return new ShreddedPorkWithPotatoes();        }    }}

运行结果:


0 0
原创粉丝点击