c#工厂模式和抽象工厂模式
时间: 2024-08-14 22:06:18 浏览: 61
在C#中,工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而不暴露其内部细节。通过定义一个接口或抽象类,然后由工厂类负责实例化具体的对象。例如:
```csharp
interface IAnimal { }
class Dog : IAnimal { }
class Cat : IAnimal { }
// 工厂模式
class AnimalFactory {
public static IAnimal CreateAnimal(string type) {
if (type == "Dog") return new Dog();
else if (type == "Cat") return new Cat();
// 其他类型...
}
}
```
而抽象工厂模式则更为复杂,它是一个更高层次的设计,当需要创建一系列相关的或相互依赖的对象时适用。抽象工厂提供了一个接口,用于创建整个产品族,而不是单一的对象:
```csharp
abstract class AnimalFactory {
public abstract IAnimal GetDog();
public abstract IAnimal GetCat();
}
class DogFactory : AnimalFactory {
public override IAnimal GetDog() => new Dog();
public override IAnimal GetCat() => throw new NotSupportedException("Cat not supported by this factory");
}
class CatFactory : AnimalFactory {
public override IAnimal GetDog() => throw new NotSupportedException("Dog not supported by this factory");
public override IAnimal GetCat() => new Cat();
}
```
使用时,客户端无需关心具体是哪个工厂创建对象:
```csharp
IAnimalFactory factory = FactorySelector.GetFactory(); // 根据环境选择DogFactory或CatFactory
IAnimal dog = factory.GetDog();
```
阅读全文