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