C#的三种工厂模式
- 工厂模式是一种创建型模式,为的是减少创建对象时,使用端与具体的类的耦合关系,尤其是在有多种对象需要创建时,那么使用端就会与多个类之间产生耦合,工厂模式也算是符合迪米特法则吧,尽量让使用端尽可能的知道更少的类,而通过朋友(工厂)去与具体的类产生联系,只依赖于工厂和产品的抽象类,总的来说,就是把使用产品的各种业务逻辑和产品的创建分离开来。
- 工厂模式一共有三种具体的模式:
- 简单工厂模式
简单工厂模式正如其名,是这三种模式里面最简单的,它只需要对工厂的依赖和对产品抽象类的依赖就行了。
举一个用手机打电话的例子
/// <summary>
/// 富士康科技集团
/// </summary>
public class Foxconn
{
public static Phone Product(string type)
{
switch (type)
{
case "apple":
return new Apple();
case "xiaomi":
return new XiaoMi();
}
return null;
}
}
/// <summary>
/// 抽象类,手机
/// </summary>
public abstract class Phone
{
public abstract void Call();
}
/// <summary>
/// 具体的手机,小米手机
/// </summary>
public class XiaoMiPhone : Phone
{
public override void Call()
{
Console.WriteLine("小米手机打电话");
}
}
/// <summary>
/// 具体的手机,苹果手机
/// </summary>
public class ApplePhone : Phone
{
public override void Call()
{
Console.WriteLine("苹果手机打电话");
}
}
当用户需要买手机打电话时,它就不用知道富士康内部是用的什么操作,怎么生产的,它是保密的,用户也不需要知道。
static void Main(string[] args)
{
Phone apple = Foxconn.Product("apple");