工厂模式c#具体代码实现
时间: 2023-08-12 20:08:37 浏览: 172
以下是在C#中实现工厂模式的代码示例:
1. 简单工厂模式(Simple Factory Pattern):
```csharp
public abstract class Product
{
public abstract void Operation();
}
public class ConcreteProductA : Product
{
public override void Operation()
{
Console.WriteLine("ConcreteProductA operation");
}
}
public class ConcreteProductB : Product
{
public override void Operation()
{
Console.WriteLine("ConcreteProductB operation");
}
}
public class SimpleFactory
{
public Product CreateProduct(string productType)
{
if (productType == "A")
{
return new ConcreteProductA();
}
else if (productType == "B")
{
return new ConcreteProductB();
}
else
{
throw new ArgumentException("Invalid product type");
}
}
}
// 客户端使用示例
SimpleFactory factory = new SimpleFactory();
Product productA = factory.CreateProduct("A");
productA.Operation(); // 输出:ConcreteProductA operation
Product productB = factory.CreateProduct("B");
productB.Operation(); // 输出:ConcreteProductB operation
```
2. 工厂方法模式(Factory Method Pattern):
```csharp
public abstract class Product
{
public abstract void Operation();
}
public class ConcreteProductA : Product
{
public override void Operation()
{
Console.WriteLine("ConcreteProductA operation");
}
}
public class ConcreteProductB : Product
{
public override void Operation()
{
Console.WriteLine("ConcreteProductB operation");
}
}
public abstract class Creator
{
public abstract Product FactoryMethod();
public void SomeOperation()
{
Product product = FactoryMethod();
product.Operation();
}
}
public class ConcreteCreatorA : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProductA();
}
}
public class ConcreteCreatorB : Creator
{
public override Product FactoryMethod()
{
return new ConcreteProductB();
}
}
// 客户端使用示例
Creator creatorA = new ConcreteCreatorA();
creatorA.SomeOperation(); // 输出:ConcreteProductA operation
Creator creatorB = new ConcreteCreatorB();
creatorB.SomeOperation(); // 输出:ConcreteProductB operation
```
在这些示例中,我们定义了抽象产品类 `Product` 和具体产品类 `ConcreteProductA` 和 `ConcreteProductB`。对于简单工厂模式,我们创建了一个简单工厂类 `SimpleFactory`,它的 `CreateProduct` 方法根据传入的参数来创建对应的产品对象。对于工厂方法模式,我们定义了抽象创建者类 `Creator` 和具体创建者类 `ConcreteCreatorA` 和 `ConcreteCreatorB`,每个具体创建者类实现了工厂方法来创建对应的产品对象。
客户端使用时,先创建相应的工厂类对象,然后通过工厂对象的方法来创建产品对象,并进行相应的操作。
以上是在C#中实现工厂模式的示例代码。通过使用工厂模式,我们可以将对象的创建逻辑封装起来,使得客户端代码与具体类解耦,并提供了一种可扩展和可维护的方式来创建对象。
阅读全文