设计模式之简单工厂模式

         博客沉寂了一段时间,主要是这段时间在玩古剑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父类去完成,可不可以呢?答案是肯定的,因为这样相当于把工厂角色和抽象产品角色变成了一个角色。好了,第一篇设计模式的文章就是这样了,我会在后面的文章里继续写设计模式的文章的,欢迎大家指教!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云来雁去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值