抽象工厂模式是Java中常用的设计模式之一,属于创建型设计模式,用于提供一个创建一系列相关或相互依赖对象的接口
,而无需指定具体实现类。它允许客户端使用抽象接口来创建一组相关的产品
,而不必关心实际的产品是如何创建的,下面使用Java代码来看看它的使用方法吧。
// 抽象产品接口
interface Button {
void display();
}
// 具体产品类
class WindowsButton implements Button {
@Override
public void display() {
System.out.println("Displaying Windows Button");
}
}
class MacButton implements Button {
@Override
public void display() {
System.out.println("Displaying Mac Button");
}
}
// 抽象工厂接口
interface GUIFactory {
Button createButton();
}
// 具体工厂类
class WindowsFactory implements GUIFactory {
@Override
public Button createButton() {
return new WindowsButton();
}
}
class MacFactory implements GUIFactory {
@Override
public Button createButton() {
return new MacButton();
}
}
// 客户端类
public class AbstractFactoryPatternExample {
public static void main(String[] args) {
// 使用具体工厂来创建产品
GUIFactory factory = new WindowsFactory();
Button button = factory.createButton();
button.display();
}
}
优点:
- 封装了对象的创建过程,客户端
无需关心具体产品的实现细节
。 - 容易
替换具体工厂类
以创建不同风格的产品系列。 - 符合开闭原则,可以轻松地
添加新的产品系列
而无需修改现有代码。
缺点:
- 难以支持
新种类的产品
,需要修改抽象工厂接口及其所有实现
。
使用场景:
- 当需要创建
一系列相关或相互依赖的产品对象
时,可以使用抽象工厂模式。 - 当希望客户端不依赖具体产品类,而是
依赖于产品的接口
时,可以使用抽象工厂模式。 - 当需要在
运行时切换不同产品系列
时,可以使用抽象工厂模式。