Skip to content

2.3、抽象工厂模式

抽象工厂模式

意图

  • 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

概念

  • 适用于:
    • 一个系统要独立于他的产品的创建、组合和表示时
    • 一个系统要由多个产品系列中的一个来配置时
    • 当要强调一系列相关的产品对象的设计以便进行联合使用时
    • 当提供一个产品类库,只想显示它们的接口而不是实现时

区别

  • 一个工厂只能创建一类产品为工厂方法模式
  • 一个工厂可以创建多个产品为抽象工厂模式

代码

java

public class AbstractFactory {
    public static void main(String[] args) {
        Factory factory1 = new Factory1();
        ProductA productA1 = factory1.createProductA();
        ProductB productB1 = factory1.createProductB();
        Factory factory2 = new Factory2();
        ProductA productA2 = factory2.createProductA();
        ProductB productB2 = factory2.createProductB();
    }
}

interface Factory {
    public ProductA createProductA();
    public ProductB createProductB();
}

interface ProductA {
    public void info();
}

class ProductA1 implenents ProductA {
    @Override
    public void info() {
        System.out.println("产品A1");
    }
}

class ProductA2 implenents ProductA {
    @Override
    public void info() {
        System.out.println("产品A2");
    }
}

interface ProductB {
    public void info();
}

class ProductB1 implenents ProductB {
    @Override
    public void info() {
        System.out.println("产品B1");
    }
}

class ProductB2 implenents ProductB {
    @Override
    public void info() {
        System.out.println("产品B2");
    }
}

class Factory1 implenents Factory {
  @Override
  public Product createProductA() {
    return new ProductA1();
  }
  @Override
  public Product createProductB() {
    return new ProductB1();
  }
}

class Factory2 implenents Factory {
    @Override
    public Product createProductA() {
        return new ProductA2();
    }
    @Override
    public Product createProductB() {
        return new ProductB2();
    }
}

KESHAOYE-知识星球 V20251108213032