抽象工厂模式
字数: 0 字 时长: 0 分钟
简介
抽象工厂模式(Abstract Factory Pattern)是对工厂方法模式的一种扩展。
- 工厂方法模式主要用于创建单一产品
- 抽象工厂模式主要用于创建产品族。
UML 图
从类图可以看出来,抽象工厂模式和工厂方法模式非常像,不过只是从单一产品变成了产品族。
实现示例
以多平台 UI 渲染为例,要求一套 UI 组件适配 Web 平台和 Android 平台。
java
// 1. 定义抽象产品接口
public interface Button {
void render();
}
public interface TextBox {
void render();
}
// 2. 抽象工厂定义抽象方法创建产品
public interface UIFactory {
Button createButton();
TextBox createTextBox();
}
// 3. 定义具体产品
public class WebButton implements Button {
void render() {
System.out.println("Web 风格按钮");
}
}
public class WebTextBox implements TextBox {
void render() {
System.out.println("Web 风格文本框");
}
}
public class AndroidButton implements Button {
void render() {
System.out.println("Android 风格按钮");
}
}
public class AndroidTextBox implements TextBox {
void render() {
System.out.println("Android 风格文本框");
}
}
// 4. 定义具体工厂创建具体产品
public class WebUIFactory implements UIFactory {
Button createButton() {
return new WebButton();
}
TextBox createTextBox() {
return new WebTextBox();
}
}
public class AndroidUIFactory implements UIFactory {
Button createButton() {
return new AndroidButton();
}
TextBox createTextBox() {
return new AndroidTextBox();
}
}
// 5. 客户端调用示例
public static void main(String[] args) {
UIFactory factory = new WebUIFactory();
Button button = factory.createButton();
TextBox textBox = factory.createTextBox();
button.render();
textBox.render();
}