C#Abstract Factory模式-创建型设计模式详解
Abstract Factory 模式是 创建型设计模式 中的一种,它提供了一种方法,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。该模式主要用于产品族的创建,目的是将一组产品的创建封装在一个工厂类中。
具体实现时,Abstract Factory 定义一个接口,用于创建一系列相关产品,而每个具体工厂类实现该接口,创建具体的产品对象。
### 关键组成部分:
- 抽象工厂:定义创建一组相关产品对象的接口。
- 具体工厂:实现了抽象工厂的接口,负责具体产品的创建。
- 抽象产品:为每种产品定义接口。
- 具体产品:实现抽象产品的接口,定义具体的产品。
优势:
- 提供了一个接口来创建相关产品系列。
- 避免了产品之间的耦合性,增加了系统的可扩展性。
应用场景:
- 当系统中有多个产品系列,而每个系列中的产品有相互依赖关系时,Abstract Factory 就可以提供一种统一的解决方案。
```csharp
public interface IButton
{
void Render();
}
public interface ICheckbox
{
void Render();
}
public interface IGUIFactory
{
IButton CreateButton();
ICheckbox CreateCheckbox();
}
public class WindowsButton : IButton
{
public void Render() => Console.WriteLine("Render Windows Button");
}
public class WindowsCheckbox : ICheckbox
{
public void Render() => Console.WriteLine("Render Windows Checkbox");
}
public class MacButton : IButton
{
public void Render() => Console.WriteLine("Render Mac Button");
}
public class MacCheckbox : ICheckbox
{
public void Render() => Console.WriteLine("Render Mac Checkbox");
}
public class WindowsFactory : IGUIFactory
{
public IButton CreateButton() => new WindowsButton();
public ICheckbox CreateCheckbox() => new WindowsCheckbox();
}
public class MacFactory : IGUIFactory
{
public IButton CreateButton() => new MacButton();
public ICheckbox CreateCheckbox() => new MacCheckbox();
}
```
通过 Abstract Factory,我们可以在应用中实现 Windows 和 Mac 系统的不同界面样式,而不需要改变客户端的代码。
评论区