2024年5月10日发(作者:)
java抽象工厂模式举例
抽象工厂模式是一种创建型设计模式,它提供一个接口用于创建相关对象家族,而无需明确
指定它们的具体类。下面是一个简单的Java抽象工厂模式的示例,假设我们有两个不同类
型的工厂,每个工厂可以创建多种相关产品。
首先,定义两个产品家族的抽象接口:
```java
// 抽象产品A
interface Window {
void open();
}
// 具体产品A1
class WindowsWindow implements Window {
@Override
public void open() {
n("Opening a Windows window");
}
}
// 具体产品A2
class MacWindow implements Window {
@Override
public void open() {
n("Opening a Mac window");
}
}
// 抽象产品B
interface Button {
void click();
}
// 具体产品B1
class WindowsButton implements Button {
@Override
public void click() {
n("Clicking a Windows button");
}
}
// 具体产品B2
class MacButton implements Button {
@Override
public void click() {
n("Clicking a Mac button");
}
}
```
接下来,定义抽象工厂接口,用于创建产品家族:
```java
// 抽象工厂接口
interface GUIFactory {
Window createWindow();
Button createButton();
}
```
然后,创建两个具体工厂类,分别用于创建Windows和Mac产品家族的对象:
```java
// 具体工厂1(用于创建Windows产品家族)
class WindowsFactory implements GUIFactory {
@Override
public Window createWindow() {
return new WindowsWindow();
}
@Override
public Button createButton() {
return new WindowsButton();
}
}
// 具体工厂2(用于创建Mac产品家族)
class MacFactory implements GUIFactory {
@Override
public Window createWindow() {
return new MacWindow();
}
@Override
public Button createButton() {
return new MacButton();
}
}
```
现在,您可以使用抽象工厂来创建不同产品家族的对象,而无需关心它们的具体实现:
```java
public class Main {
public static void main(String[] args) {
// 使用Windows工厂创建Windows产品家族的对象
GUIFactory windowsFactory = new WindowsFactory();
Window windowsWindow = Window();
Button windowsButton = Button();
(); // 输出:Opening a Windows window
(); // 输出:Clicking a Windows button
// 使用Mac工厂创建Mac产品家族的对象
GUIFactory macFactory = new MacFactory();
Window macWindow = Window();
Button macButton = Button();
(); // 输出:Opening a Mac window
(); // 输出:Clicking a Mac button
}
}
```
抽象工厂模式允许您创建一整个产品家族,确保这些产品能够协同工作。这个示例展示了如
何使用抽象工厂模式来创建不同平台的GUI元素,而不需要直接指定它们的具体类。
发布评论