设计模式之简单工厂模式

来源:互联网 发布:淘宝发布宝贝放入仓库 编辑:程序博客网 时间:2024/05/21 11:31

         博客沉寂了一段时间,主要是这段时间在玩古剑2,现在游戏即将通关,我想是时候开始学习新东西了。

         今天给大家带来的是设计模式中简单工厂模式。

        从设计模式的类型上来说,简单工厂模式是属于创建型模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。简单工厂模式主要有三种角色构成,分别是工厂类角色、抽象产品角色、具体产品角色。工厂类角色负责根据客户端传入的参数构造产品实例,抽象产品角色负责定义产品的公共父类或公共接口,具体产品角色负责定义具体的产品对象。下面我们以一个红绿灯的例子来学习简单工厂模式。

        首先我们来构建抽象产品角色,定义一个Light类

/// <summary>    /// 定义一个抽象类Light    /// </summary>    public abstract class Light    {        /// <summary>        /// 抽象方法TurnOn        /// </summary>        public abstract void TurnOn();        /// <summary>        /// 抽象方法TurnOff        /// </summary>        public abstract void TurnOff();    }
          接下来根据Light类分别创建两个具体的产品角色类GreenLigth、RedLight

class GreenLight:Light    {        public void TurnOn()        {            Console.WriteLine("GreenLight is turned on");        }        public void TurnOff()        {            Console.WriteLine("GreenLight is turned off");        }    }
 public class RedLight:Light    {        public void TurnOn()        {            Console.WriteLine("RedLight is turned on");        }        public void TurnOff()        {            Console.WriteLine("RedLight is turned off");        }    }
       接下来,我们把具体的产品角色类和工厂角色类完成交互,构造一个LightCreator类:

public class LightCreator    {        public Light CreateLight(LightType Type)        {            Light Light = null;            switch (Type)            {                case LightType.GreenLight:                    Light = new GreenLight();                    break;                case LightType.RedLight:                    Light = new RedLight();                    break;            }            return Light;        }    }
           这样,我们就运用简单工厂模式设计了一个程序,我们只需要给工厂角色类传入一个参数,它就可以为我们生产出我们需要的产品了。当然,如果我们将生产产品的任务直接交给Light父类去完成,可不可以呢?答案是肯定的,因为这样相当于把工厂角色和抽象产品角色变成了一个角色。好了,第一篇设计模式的文章就是这样了,我会在后面的文章里继续写设计模式的文章的,欢迎大家指教!


原创粉丝点击