以下是一个简单的C#实现抽象工厂模式的例子:
using System;
// 抽象产品类
public abstract class AbstractProductA
{
public abstract void Show();
}
public abstract class AbstractProductB
{
public abstract void Show();
}
// 具体产品类
public class ProductA1 : AbstractProductA
{
public override void Show()
{
Console.WriteLine("Product A1");
}
}
public class ProductA2 : AbstractProductA
{
public override void Show()
{
Console.WriteLine("Product A2");
}
}
public class ProductB1 : AbstractProductB
{
public override void Show()
{
Console.WriteLine("Product B1");
}
}
public class ProductB2 : AbstractProductB
{
public override void Show()
{
Console.WriteLine("Product B2");
}
}
// 抽象工厂类
public interface IAbstractFactory
{
AbstractProductA CreateProductA();
AbstractProductB CreateProductB();
}
// 具体工厂类
public class ConcreteFactory1 : IAbstractFactory
{
public AbstractProductA CreateProductA()
{
return new ProductA1();
}
public AbstractProductB CreateProductB()
{
return new ProductB1();
}
}
// 客户端代码
public class Client
{
public static void Main()
{
IAbstractFactory factory = new ConcreteFactory1();
AbstractProductA productA = factory.CreateProductA();
AbstractProductB productB = factory.CreateProductB();
productA.Show();
productB.Show();
}
}
这个例子中,我们定义了两个抽象产品类AbstractProductA
和AbstractProductB
,以及它们的具体实现类ProductA1
、ProductA2
、ProductB1
和ProductB2
。然后我们定义了一个抽象工厂接口IAbstractFactory
,以及实现该接口的具体工厂类ConcreteFactory1
。客户端代码Client
使用ConcreteFactory1
来创建产品A和产品B的实例,并调用它们的Show
方法来展示。这就是抽象工厂模式的一个简单实现。