工厂模式用于创建对象而不将具体类的代码与客户端代码混合在一起,从而使一个类的实例化延迟到其子类。
示例代码:
// 抽象产品
public interface IProduct
{
void Use();
}
// 具体产品A
public class ConcreteProductA : IProduct
{
public void Use()
{
Console.WriteLine("Using ConcreteProductA");
}
}
// 具体产品B
public class ConcreteProductB : IProduct
{
public void Use()
{
Console.WriteLine("Using ConcreteProductB");
}
}
// 工厂类
public class ProductFactory
{
public static IProduct CreateProduct(string type)
{
switch (type)
{
case "A":
return new ConcreteProductA();
case "B":
return new ConcreteProductB();
default:
throw new ArgumentException("Invalid product type");
}
}
}
// 客户端代码
class Program
{
static void Main(string[] args)
{
IProduct productA = ProductFactory.CreateProduct("A");
productA.Use();
IProduct productB = ProductFactory.CreateProduct("B");
productB.Use();
}
}