工厂模式是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。主要解决接口选择的问题。
场景: 您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现。
下面 代码实现 工厂模式
namespace 工厂模式
{
internal class Program
{
static void Main(string[] args)
{
//调用代码
FactoryClass factoryClass = new FactoryClass();
Car carBenz = factoryClass.getCar(new Benz());
string strBenz = carBenz.ProductionCar();
Console.WriteLine(strBenz);
Car carBmw = factoryClass.getCar(new Bmw());
string strBmw = carBmw.ProductionCar();
Console.WriteLine(strBmw);
}
}
// 建立 Car 接口
public interface Car
{
string ProductionCar();
}
//Benz实现 Car
public class Benz : Car
{
public string ProductionCar()
{
AssemblingProcesses();
return "奔驰汽车";
}
private string AssemblingProcesses()
{
return "奔驰汽车的组装过程";
}
}
//Bmw实现 Car
public class Bmw : Car
{
public string ProductionCar()
{
AssemblingProcesses();
return "宝马汽车";
}
private string AssemblingProcesses()
{
return "宝马汽车的组装过程";
}
}
//创建的 汽车生成 工厂,只生产 不同汽车对象
public class FactoryClass
{
public Car getCar(Car car)
{
return car;
}
}
}
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。