抽象工厂模式

title

抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供一个接口用于创建一系列相关或依赖对象的家族,而无需指定它们具体的类。

在抽象工厂模式中,抽象工厂提供了一个接口,该接口可以用于创建一系列相关的产品,这些产品可以是一系列不同的产品,但它们都属于同一产品族。具体的工厂类实现了这个抽象工厂接口,并负责创建具体的产品。每个具体的工厂类都是负责创建同一产品族中的一组具体产品。

抽象工厂模式通常适用于以下情况:

  • 当一个系统需要一组相关的产品,并且这些产品具有共同的约束时,可以使用抽象工厂模式。
  • 当需要在不同的产品族之间切换时,可以使用抽象工厂模式。

一个简单的抽象工厂模式示例是创建不同操作系统的 GUI 工厂。假设我们需要创建两种操作系统的 GUI 工厂:Windows 和 Mac。

首先,我们需要定义一个抽象工厂接口 GUIFactory,它声明了创建不同 GUI 组件的方法:

public interface GUIFactory {
    Button createButton();
    Checkbox createCheckbox();
}

接下来,我们定义 Windows GUI 工厂和 Mac GUI 工厂,它们实现了 GUIFactory 接口:

public class WindowsGUIFactory implements GUIFactory {
    public Button createButton() {
        return new WindowsButton();
    }

    public Checkbox createCheckbox() {
        return new WindowsCheckbox();
    }
}

public class MacGUIFactory implements GUIFactory {
    public Button createButton() {
        return new MacButton();
    }

    public Checkbox createCheckbox() {
        return new MacCheckbox();
    }
}

然后,我们定义不同的 GUI 组件(如 WindowsButton、MacButton、WindowsCheckbox 和 MacCheckbox),它们实现了 Button 和 Checkbox 接口。

客户端可以通过传递不同的操作系统名称来创建不同的 GUI 工厂:

GUIFactory factory = null;
String os = System.getProperty("os.name").toLowerCase();
if (os.contains("windows")) {
    factory = new WindowsGUIFactory();
} else if (os.contains("mac")) {
    factory = new MacGUIFactory();
}

Button button = factory.createButton();
button.paint();

Checkbox checkbox = factory.createCheckbox();
checkbox.paint();

这样,客户端就可以使用抽象工厂接口来创建不同操作系统的 GUI 工厂,并使用它们创建不同的 GUI 组件。这种方式使得客户端代码更加灵活,可以轻松地添加新的操作系统和 GUI 组件类型。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:01

results matching ""

    No results matching ""