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,我们可以在应用中实现 WindowsMac 系统的不同界面样式,而不需要改变客户端的代码。

pdf 文件大小:179.57KB