C#怎么实现抽象工厂模式
时间: 2023-11-13 18:42:25 浏览: 128
在C#中实现抽象工厂模式,需要定义一个抽象工厂类,其中包含多个抽象方法,用于创建不同类别的产品对象然后,创建具体的工厂类,继承抽象工厂类,并实现抽象方法,具体工厂类负责创建具体的产品对象。最后,定义产品类,用于表示具体的产品对象。
以下是一个简单的抽象工厂模式示例:
```csharp
// 抽象产品类
abstract class Product
{
public abstract void Show();
}
// 具体产品类A
class ConcreteProductA : Product
{
public override void Show()
{
Console.WriteLine("This is product A.");
}
}
// 具体产品类B
class ConcreteProductB : Product
{
public override void Show()
{
Console.WriteLine("This is product B.");
}
}
// 抽象工厂类
abstract class Factory
{
public abstract Product CreateProductA();
public abstract Product CreateProductB();
}
// 具体工厂类X
class ConcreteFactoryX : Factory
{
public override Product CreateProductA()
{
return new ConcreteProductA();
}
public override Product CreateProductB()
{
return new ConcreteProductB();
}
}
// 具体工厂类Y
class ConcreteFactoryY : Factory
{
public override Product CreateProductA()
{
return new ConcreteProductB();
}
public override Product CreateProductB()
{
return new ConcreteProductA();
}
}
```
在上面的示例中,抽象工厂类 `Factory` 定义了两个抽象方法 `CreateProductA()` 和 `CreateProductB()`,用于创建具体的产品对象。具体工厂类 `ConcreteFactoryX` 和 `ConcreteFactoryY` 继承抽象工厂类 `Factory` 并实现了抽象方法,用于创建具体产品对象。
当需要创建产品对象时,可以先实例化具体工厂类,然后调用其方法创建所需的具体产品对象:
```csharp
Factory factory = new ConcreteFactoryX();
Product productA = factory.CreateProductA();
Product productB = factory.CreateProductB();
productA.Show(); // 输出 "This is product A."
productB.Show(); // 输出 "This is product B."
```
阅读全文