一、什么是简单工厂模式?简单工厂模式的概念是什么?
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
如果我们去买东西,我们想买牛奶应该去卖牛奶的区域;像买面包就应该去卖面包的区域,我们想购买什么东西就应该去物品相对应的区域;可是自从有了网上平台(也就相当于简单工厂)之后,我们就可以输入想要买的食品,然后直接购买;使用一个简单的案例代码:
1.首先定义一个食品的抽象类;
/// <summary>
/// 食品的抽象类
/// </summary>
public abstract class Food
{
// 输出在网上买了什么东西
public abstract void Print();
}
2.定义具体要实现的食品类
/// <summary>
/// 牛奶类
/// </summary>
public class Milk : Food
{
public override void Print()
{
Console.WriteLine("一瓶牛奶!");
}
}
/// <summary>
/// 辣条类
/// </summary>
public class Spicystrips : Food
{
public override void Print()
{
Console.WriteLine("一包辣条");
}
}
3.一个简单工厂,实现购物
/// <summary>
/// 简单工厂类, 负责购物
/// </summary>
public class FoodSimpleFactory
{
public static Food CreateFood(string type)
{
Food food = null;
if (type.Equals("辣条"))
{
food = new Spicystrips();
}
else if (type.Equals("牛奶"))
{
food = new Milk();
}
return food;
}
}
4.最后,通过客户端调用简单工厂
class Program
{
//顾客相当于客户端,调用简单工厂生产对象,导购员相当于简单工厂,帮你购物相当于生成的对象
static void Main(string[] args)
{
// 顾客想买一瓶牛奶
Food food1 = FoodSimpleFactory.CreateFood("牛奶");
food1.Print();
// 顾客想买一包辣条
Food food2 = FoodSimpleFactory.CreateFood("辣条");
food2.Print();
Console.Read();
}
}
简单工厂的优点:
1.简单工厂模式解决了客户端直接依赖于具体对象的问题,客户端可以不用直接创建对象,而仅仅是调用。简单工厂模式实现了对创建对象的分割;
2.简单工厂模式也起到了代码复用的作用;
3.明确区分了各自的职责和权力,有利于整个软件体系结构的优化。