抽象工厂模式是一种创建型设计模式,它提供了一种方式,可以将一组具有同一主题的单独工厂封装起来。在抽象工厂模式中,每个工厂都能生产一组相关的产品,例如创建按钮、文本框等界面组件。
抽象工厂模式包含以下角色:
- 抽象工厂(Abstract Factory):提供一个创建产品的接口,用于创建具有共同主题的产品。
- 具体工厂(Concrete Factory):实现抽象工厂中的抽象方法,完成具体产品的创建。
- 抽象产品(Abstract Product):定义产品的规范,描述了产品的主要特性和功能。
- 具体产品(Concrete Product):实现了抽象产品角色所定义的接口,由具体工厂来创建,它们之间一一对应。
Java代码示例:
// 抽象产品接口
interface Button {
void click();
}
// 具体产品A
class ButtonA implements Button {
@Override
public void click() {
System.out.println("Button A clicked");
}
}
// 具体产品B
class ButtonB implements Button {
@Override
public void click() {
System.out.println("Button B clicked");
}
}
// 抽象工厂接口
interface AbstractFactory {
Button createButton();
}
// 具体工厂A
class ConcreteFactoryA implements AbstractFactory {
@Override
public Button createButton() {
return new ButtonA();
}
}
// 具体工厂B
class ConcreteFactoryB implements AbstractFactory {
@Override
public Button createButton() {
return new ButtonB();
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
AbstractFactory factoryA = new ConcreteFactoryA();
Button buttonA = factoryA.createButton();
buttonA.click(); // 输出:Button A clicked
AbstractFactory factoryB = new ConcreteFactoryB();
Button buttonB = factoryB.createButton();
buttonB.click(); // 输出:Button B clicked
}
}